繁体   English   中英

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

[英]Moving Google Maps Camera to a Location

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

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

    mapView.camera = location
}

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

GMSMapView 类具有以下功能:

animate(to: GMSCameraPosition)

因此,在您的代码示例中,要这样做:

mapView.camera = location

尝试这样做:

mapView.animate(to: location)

希望这可以帮助!

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

斯威夫特 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
    }

对于 Objective-c,方法是:

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

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

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

您必须等到地图加载委托

   func moveMapCamera(at cordinate: CLLocationCoordinate2D, animated: Bool = false) {
        let camera = MKMapCamera()
        camera.centerCoordinate = cordinate
        camera.pitch = 0
        camera.altitude = 9000
        mapV.setCamera(camera, animated: animated)
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM