查找mapView中显示的标记
问题描述:
我想确定当前显示在mapview中的标记/ s。我已经研究方法如下:查找mapView中显示的标记
self.mapView.bounds.contains(markers[0].position)
但contains
命令接受CGPoint或的CGRect。在除Swift以外的其他平台上,contains
可以接受标记的位置。
如何将标记的位置转换为contains
接受?
答
使用mapview的当前projection
。使用投影的方法containsCoordinate
来检查标记的位置是否位于当前可见的投影内,也就是a.k.a.
因此,像:
let coord = marker.position
let isVisible = self.mapview.projection.containsCoordinate(coord)
答
在MapKit:
我承担与标记你的意思是一个MKAnnotation
。不要使用mapView
的边界,您应该使用visibleMapRect
并查看它是否包含标记的坐标MKMapPoints
。这是我使用的代码:
let markerPoint = MKMapPointForCoordinate(markers[0].coordinate)
if MKMapRectContainsPoint(mapView.visibleMapRect, markerPoint) {
print("Found")
} else {
print("Not found")
}
只有当标记的座标是可见的(换句话说,正在显示的标记),这将打印“发现”。如果不在屏幕上,它将打印“未找到”。
+0
我才意识到你所标记 “谷歌地图-SDK-IOS”,我指的是'MapKit'。对于那个很抱歉。请在你的问题中说清楚,因为这两个API都非常相似。 – Christoph
或者,您也可以尝试使用投影将标记的位置转换为屏幕点。 – Juul