[英]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)
希望这可以帮助!
在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.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.