将Google地图相机移动到某个位置

时间:2017-05-13 01:59:25

标签: ios swift google-maps location gmsmapview

我正在使用谷歌地图视图,我想在地图上添加一个按钮,当按下该按钮时,会将相机移动到特定位置。我目前有一个按钮插座和一个连接到该按钮的动作。

@IBAction func locationTapped(_ sender: Any) {
    print("tapped")
    let location = GMSCameraPosition.camera(withLatitude: place.latitude, longitude: place.longitude, zoom: 17.0)

    mapView.camera = location
}

place存在但由于某种原因,相机不会让步。我尝试过不同版本的代码并查看了Google地图文档,但没有一个选项可以产生结果。谁能告诉我我做错了什么?

5 个答案:

答案 0 :(得分:21)

GMSMapView类具有以下功能:

animate(to: GMSCameraPosition)

所以在你的代码示例中,而不是这样做:

mapView.camera = location

尝试这样做:

mapView.animate(to: location)

希望这有帮助!

答案 1 :(得分:12)

Swift3 Swift4 中 将标记移动到当前位置使用:

func myLocationBtnAction(_ sender: UIButton) {
            mapView.moveCamera(GMSCameraUpdate.setTarget(CLLocationCoordinate2D(latitude: (mapView.myLocation?.coordinate.latitude)!, longitude: (mapView.myLocation?.coordinate.longitude)!), zoom: 16))

并且对于特定位置使用此:

let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: lng, zoom: 16)
            mapView?.camera = camera
            mapView?.animate(to: camera)

并且不要忘记将 GMSAutocompleteViewControllerDelegate 扩展为当前位置

答案 2 :(得分:1)

Swift 2.3

此代码用于我的目的。在哪个标记点击事件使用,它移动地图的相机位置。希望你找到解决方案。

export const menuTextColor = (isOpen) => {
   return isOpen ? 'white' : 'transparent'
}

答案 3 :(得分:1)

对于Objective-c,方法是:

[mapView moveCamera:[GMSCameraUpdate setTarget:<CLLocationCoordinate2DMake>]];

答案 4 :(得分:0)

也许这很晚了,但是我通过添加以下内容解决了这个问题:

DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500), execute: {
        let camera = GMSCameraPosition.camera(withLatitude: lat!, longitude: lon!, zoom: 17.0)
        self.mMap.animate(to: camera)
    })

您必须等到地图加载委托