如何获取谷歌地图上标记点的X、Y坐标信息?
获取谷歌地图标记点的屏幕X/Y坐标解决方案
嘿,我懂你在尝试获取Google Maps标记点对应的屏幕X、Y位置时遇到的困扰了,其实这个问题有个非常直接的解决办法,咱们一步步来:
核心原理
Google Maps iOS SDK里的GMSMapView提供了projection属性,它的point(for:)方法可以帮我们把地理坐标(经纬度)直接转换成屏幕坐标(CGPoint,包含x和y值),这正是你需要的功能。
结合你的代码实现
你已经创建了标记点和地图视图,只需要添加几行代码就能拿到坐标:
// 假设你已经有了marker和mapView的实例 let markerCoordinate = marker.position // 把标记点的地理坐标转换成屏幕坐标 let markerScreenPoint = mapView.projection.point(for: markerCoordinate) // 打印结果看看 print("标记点的屏幕X坐标:\(markerScreenPoint.x),Y坐标:\(markerScreenPoint.y)")
如果是要获取你代码里提到的伦敦坐标对应的屏幕位置,同样适用:
let londonCoordinate = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let londonScreenPoint = mapView.projection.point(for: londonCoordinate)
注意事项
- 确保
mapView已经完成初始化并且添加到视图层级中,不然projection可能无法正常工作。 - 如果地图发生缩放、平移等操作,屏幕坐标会跟着变化。如果需要实时获取更新后的坐标,可以在地图的代理方法里处理:
func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) { // 重新获取标记点的屏幕坐标 let updatedScreenPoint = mapView.projection.point(for: marker.position) print("更新后的屏幕坐标:\(updatedScreenPoint)") }
这个方法是SDK官方提供的,稳定性和准确性都有保障,放心用就好~
内容的提问来源于stack exchange,提问作者vishnu
相关产品推荐
相关产品推荐

