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

Posted

技术标签:

【中文标题】将 Google 地图相机移动到某个位置【英文标题】:Moving Google Maps Camera to a Location 【发布时间】:2017-10-12 09:49:28 【问题描述】:

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

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

    mapView.camera = location

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

【问题讨论】:

【参考方案1】:

GMSMapView 类具有以下功能:

animate(to: GMSCameraPosition)

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

mapView.camera = location

尝试这样做:

mapView.animate(to: location)

希望这会有所帮助!

【讨论】:

您好,我们尝试实现这一点,但除非用户与地图交互,否则相机不会移动。一旦用户触摸/点击地图,相机就会移动到所需位置。我们错过了什么吗? @shoan 我面临着同样奇怪的事情。你有解决办法吗,请告诉我。我无法弄清楚这里的问题。【参考方案2】:

Swift3Swift4 中 将标记移动到当前位置使用这个:

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

【讨论】:

【参考方案3】:

斯威夫特 2.3

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

 func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool 
        mapView.selectedMarker = marker
        var point = mapView.projection.pointForCoordinate(marker.position)
        let camera = mapView.projection.coordinateForPoint(point)
        let position = GMSCameraUpdate.setTarget(camera)
        mapView.animateWithCameraUpdate(position)
        return true
    

【讨论】:

【参考方案4】:

对于 Objective-c,方法是:

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

【讨论】:

【参考方案5】:

也许这太晚了,但我通过添加这个来解决这个问题:

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

你必须等到地图加载委托

【讨论】:

以上是关于将 Google 地图相机移动到某个位置的主要内容,如果未能解决你的问题,请参考以下文章

移动相机方法上的谷歌地图空对象引用[关闭]

使相机随着位置的变化而移动(Google Maps Api)

浏览器后退按钮跳转到最后一个位置(如 maps.google.com)

动画相机以定位和设置谷歌地图中的平移

Flutter 中的 Google Maps 相机位置更新问题

将相机重定向到当前位置 Google Maps API v2