我正在使用Google Maps API for IOS,并想知道是否有一种方法可以检索设备的当前位置,以便在应用加载后立即在地图上显示。
目前,当应用程序加载当前位置坐标对象为零时,我无法在没有应用程序崩溃的情况下将地图摄像机设置到其上。有没有办法绕过这个而不必将相机设置在别处,然后用户按下我的位置按钮以移动相机。
答案 0 :(得分:1)
要从地图获取位置,只需使用gmsMap.myLocationEnabled = true
,谷歌地图将为您完成剩下的工作。要将摄像机设置到您的位置,请通过这样添加键myLocation的键值观察器来进行映射
map.addObserver(self, forKeyPath: "myLocation", options: .New, context: nil)
deinit {
//dont forget to remove observer
mapView.removeObserver(self, forKeyPath: "myLocation")
}
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if change[NSKeyValueChangeOldKey] == nil {
let location = change[NSKeyValueChangeNewKey] as CLLocation
gmsMap.camera = GMSCameraPosition.cameraWithTarget(location.coordinate, zoom: 16)
}
}
答案 1 :(得分:0)
我认为这个答案会对你有所帮助: https://stackoverflow.com/a/20994202/4195406
基本上你必须在加载mapview后启用myLocation:
dispatch_async(dispatch_get_main_queue(), ^{
mapView_.myLocationEnabled = YES;
});