2012-12-08 10 views
18

Ich habe Probleme, wenn ich den aktuellen Standort abrufen möchte.Aktuellen Standort auf Google Map abrufen

Dies ist das erste Mal, dass ich diese GM API benutze und es gibt so viele Dinge, die ich nicht verstehe.

Hier ist mein Code, und ich will

var geocoder = new google.maps.Geocoder(); 

function initialize() { 
    var latLng = new google.maps.LatLng(-7.7801502, 110.3846387); 
    var map = new google.maps.Map(document.getElementById('mapCanvas'), { 
    zoom: 15, 
    center: latLng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    var marker = new google.maps.Marker({ 
    position: latLng, 
    title: 'Ambarrukmo Plaza Yogyakarta', 
    map: map, 
    draggable: true 
    }); 
} 

Das Problem ist, ich ändern will -7,7801502 und 110,3846387 Wert auf Benutzer des aktuellen Position automatisch berechnet. Kann ich das machen?

Vielen Dank für Ihre Hilfe und Erklärung.

Eine andere Frage: -> Was ist, wenn ich diesen Wert basierend auf einem Gerät mit integriertem GPS ändern werde?

Antwort

27

Sie können den aktuellen Standort des Nutzers nicht mit Google Maps abrufen. Wenn Sie jedoch Google Maps mit Google Loader erhalten, können Sie den Standort google.loader.CurrentLocation anhand von IP ermitteln. Eine andere Möglichkeit ist die HTML5 GeoLocation API zu verwenden.

function getLocation() { 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
    alert("Geolocation is not supported by this browser."); 
    } 
} 
function showPosition(position) { 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
    map.setCenter(new google.maps.LatLng(lat, lng)); 
} 
+0

Für die meisten Browser eines sicheren https-Protokoll ist nun für die HTML5 Geolocation API – ZimSystem

1

Wenn Sie in die Welt der Google Maps API bleiben, und vorausgesetzt, Sie die Karte Variable haben Sie verwenden,

var map = new google.maps.Map(document.getElementById("map-canvas"), 
     mapOptions); 

var myLat = map.center.k; 
var myLng = map.center.B; 

oder könnten Sie verwenden können

alert("Lat="+map.center.k); 
alert("Lng="+map.center.B); 
-1
import UIKit 
import GoogleMaps 
import GooglePlaces 
import CoreLocation 

class ViewController: UIViewController,CLLocationManagerDelegate,GMSMapViewDelegate { 

@IBOutlet weak var currentlocationlbl: UILabel! 


var mapView:GMSMapView! 

var locationManager:CLLocationManager! = CLLocationManager.init() 

var geoCoder:GMSGeocoder! 

var marker:GMSMarker! 

var initialcameraposition:GMSCameraPosition! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    self.mapView = GMSMapView() 
    self.geoCoder = GMSGeocoder() 
    self.marker = GMSMarker() 
    self.initialcameraposition = GMSCameraPosition() 

    // Create gms map view-------------> 
    mapView.frame = CGRect(x: 0, y: 150, width: 414, height: 667) 
    mapView.delegate = self 
    mapView.isMyLocationEnabled = true 
    mapView.isBuildingsEnabled = false 
    mapView.isTrafficEnabled = false 
    self.view.addSubview(mapView) 

    // create cureent location label----------> 

    self.currentlocationlbl.lineBreakMode = NSLineBreakMode.byWordWrapping 
    self.currentlocationlbl.numberOfLines = 3 
    self.currentlocationlbl.text = "Fetching address.........!!!!!" 

    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation 
    if locationManager.responds(to: #selector(CLLocationManager.requestAlwaysAuthorization)) 
    { 
     self.locationManager.requestAlwaysAuthorization() 
    } 
    self.locationManager.startUpdatingLocation() 

    if #available(iOS 9, *) 
    { 
    self.locationManager.allowsBackgroundLocationUpdates = true 
    } 
    else 
    { 
     //fallback earlier version 
    } 
    self.locationManager.startUpdatingLocation() 


    self.marker.title = "Current Location" 
    self.marker.map = self.mapView 


    // Gps button add mapview 

    let gpbtn:UIButton! = UIButton.init() 
    gpbtn.frame = CGRect(x: 374, y: 500, width: 40, height: 40) 
    gpbtn.addTarget(self, action: #selector(gpsAction), for: .touchUpInside) 
    gpbtn.setImage(UIImage(named:"gps.jpg"), for: .normal) 
    self.mapView.addSubview(gpbtn) 
    } 

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 
    var location123 = CLLocation() 

    location123 = locations[0] 

    let coordinate:CLLocationCoordinate2D! = CLLocationCoordinate2DMake(location123.coordinate.latitude, location123.coordinate.longitude) 

    let camera = GMSCameraPosition.camera(withTarget: coordinate, zoom: 16.0) 

    self.mapView.camera = camera 
    self.initialcameraposition = camera 
    self.marker.position = coordinate 
    self.locationManager.stopUpdatingLocation() 

} 


func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) 
{ 
    self.currentAddres(position.target) 
} 

func currentAddres(_ coordinate:CLLocationCoordinate2D) -> Void 
{ 
    geoCoder.reverseGeocodeCoordinate(coordinate) { (response, error) in 

     if error == nil 
     { 
      if response != nil 
      { 

       let address:GMSAddress! = response!.firstResult() 

       if address != nil 
       { 
        let addressArray:NSArray! = address.lines! as NSArray 

        if addressArray.count > 1 
        { 
         var convertAddress:AnyObject! = addressArray.object(at: 0) as AnyObject! 
         let space = "," 
         let convertAddress1:AnyObject! = addressArray.object(at: 1) as AnyObject! 
         let country:AnyObject! = address.country as AnyObject! 

         convertAddress = (((convertAddress.appending(space) + (convertAddress1 as! String)) + space) + (country as! String)) as AnyObject 

         self.currentlocationlbl.text = "\(convertAddress!)".appending(".") 
        } 
        else 
        { 
         self.currentlocationlbl.text = "Fetching current location failure!!!!" 
        } 

       } 


      } 
     } 
    } 
} 

...

+0

erforderlich Während dieses Code-Schnipsel, die Frage lösen kann, [einschließlich einer Erklärung] (http://meta.stackexchange.com/ Fragen/114762/Erklären-vollständig-Code-basierte Antworten) hilft wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – Isma

Verwandte Themen