在启动应用程序时从Google Maps IOS获取当前位置

时间:2015-02-04 20:23:12

标签: ios google-maps swift currentlocation

我正在使用Google Maps API for IOS,并想知道是否有一种方法可以检索设备的当前位置,以便在应用加载后立即在地图上显示。

目前,当应用程序加载当前位置坐标对象为零时,我无法在没有应用程序崩溃的情况下将地图摄像机设置到其上。有没有办法绕过这个而不必将相机设置在别处,然后用户按下我的位置按钮以移动相机。

2 个答案:

答案 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;
  });