Lee*_*ong 32
最快的方法是使用内置的Apple功能,这将使这种事情超级快!
if(MKMapRectContainsPoint(mapView.visibleMapRect, MKMapPointForCoordinate(coordinate)))
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
坐标是你的CLLocation2D.
这比使用批量if语句计算坐标要快得多.原因是Apple使用Quadtree并且可以为您快速查找.
如果您经常使用地图,我建议您创建一个这样的扩展:
extension MKMapView {
func contains(coordinate: CLLocationCoordinate2D) -> Bool {
return MKMapRectContainsPoint(self.visibleMapRect, MKMapPointForCoordinate(coordinate))
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以在任何地方使用,例如:
func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
if mapView.contains(coordinate: mapView.centerCoordinate) {
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式你保持代码:
| 归档时间: |
|
| 查看次数: |
4856 次 |
| 最近记录: |