查找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) 

https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_projection.html#aa6ad29e6831e40f00435c3aaeda8e08a

+0

或者,您也可以尝试使用投影将标记的位置转换为屏幕点。 – Juul

在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