Google Maps API: Erste-Koordinaten der aktuellen Position iOS
Ich arbeite derzeit mit der Google Maps API in mein Projekt. Ich bin versucht, die Standard-Kamera/zoom, um die Benutzer-Speicherort. Ich mache Folgendes:
@implementation ViewController{
GMSMapView *mapView_;
}
@synthesize currentLatitude,currentLongitude;
- (void)viewDidLoad
{
[super viewDidLoad];
mapView_.settings.myLocationButton = YES;
mapView_.myLocationEnabled = YES;
}
- (void)loadView{
CLLocation *myLocation = mapView_.myLocation;
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(myLocation.coordinate.latitude, myLocation.coordinate.longitude);
marker.title = @"Current Location";
marker.map = mapView_;
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:myLocation.coordinate.latitude
longitude:myLocation.coordinate.longitude
zoom:6];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
self.view = mapView_;
NSLog(@"%f, %f", myLocation.coordinate.latitude, myLocation.coordinate.longitude);
}
Jedoch funktioniert es nicht, da wenn ich
NSLog(@"%f, %f", myLocation.coordinate.latitude, myLocation.coordinate.longitude);
gibt es 0, 0, und es gibt nicht den aktuellen Standort-Koordinaten. Wie kann ich richtig erhalten die Nutzer die Koordinaten?
- Was ist diese Zeile tun ? CLLocation *myLocation = mapView_.myLocation; dazu kommen aktuelle Lage, wir müssen 1. Fügen Sie CoreLocation Framework 2. Erstellen Sie ein Objekt des CLLocationManager CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 3. [locationManager startUpdatingLocation]; CLLocation *location = [locationManager location]; CLLocationCoordinate2D coordinate = [Ort koordinieren];
- Google Maps hat eine Funktion, bekommt der Benutzer den Standort, aber ich weiß nicht, wie um es zu bekommen
- Siehe: stackoverflow.com/questions/16331767/... Hoffe, Es hilft
- Ich sah, dass, aber es scheint nicht zu funktionieren für mich
- wenn ich es benutze, hab ich den leeren Bildschirm, zeige ich die Karte auf eine benutzerdefinierte Ansicht und wollen sich Längen-und Breitengrad der aktuellen Position ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
.h
.m
beantwortet hier.
[super viewDidLoad];
in Ihrer eigenen ImplementierungviewDidLoad
locationManager.delegate = self
Sie entsprechen müssen, um dieCLLocationManagerDelegate
delegieren und umsetzenfunc locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {...}
. Möglicherweise möchten Sie auch zu stoppen, aktualisieren Sie die Lage irgendwann:self.locationManager.stopUpdatingLocation()
Wenn eine app das erste mal startet kann es noch nicht wissen, Ihren Standort, wie es in der Regel eine Weile dauert, bis das GPS-Gerät zu sperren, die auf Ihrem Standort (wenn es gerade gestartet wurde), und vor allem, wenn dies ist das erste mal, das die Anwendung ausgeführt wurde, und so der Benutzer noch nicht beantwortet der Eingabeaufforderung geben Sie der app Zugriff auf Ihren Standort. Auch scheint es, wie
mapView.myLocation
ist immer leer (entweder gleich null oder hat die Koordinaten 0,0), wenn die map-Ansicht wurde gerade erstellt.So müssen Sie warten, bis die Position des Benutzers bekannt ist, und aktualisieren Sie dann die position der Kamera.
Eine Möglichkeit könnte sein, mit dem code auf how to get aktuellen Standort in der google map sdk im iphone wie vorgeschlagen von Puneet, aber beachten Sie, dass der Beispielcode dort ist fehlen die details der Einrichtung der Standort-manager (wie das einstellen der Position manager delegieren), die möglicherweise, warum es nicht für Sie arbeiten.
Eine andere Möglichkeit könnte die Verwendung KVO auf
mapView.myLocation
wie hier beschrieben: über die Positionierung selbst,einige ProblemeDurch die Art, wie in Ihrem Beispiel-code, den Sie sind, den Zugriff auf
mapView.myLocation
bevor Sie diemapView
, und so die Lage wäre immer null sowieso.Ich habe gerade Heruntergeladen der neue GoogleMap-SDK-Demo für iOS. Hier ist, was ich je gesehen habe aus dem source-code, wie die "Aktuelle Position" wird erreicht über KVO.
Hoffe es kann dir helfen.
Nur für den Fall jemand will DrDev ausgezeichnete Antwort in Swift 3: