我有一个带有2000多个地方的KML文件,但是当我使用它时,加载所有地方要花费5分钟以上。现在我的问题是,是否可以只加载距本地5英里左右的地点并为用户添加按钮,以便他们在需要时可以单击以使用所有地点。
请帮助我,我是一名业余程序员,没有找到解决方案,谢谢您的进步
最佳答案
您应该为自己的CLLocation
和特定KML地标的currentLocation
创建 placemarkLocation
对象,然后可以使用 distanceFromLocation
查看它们的距离(以米为单位)。鉴于每英里有1,609.34米,因此五英里为8,046.72米:
CLLocation *placemarkLocation = [[CLLocation alloc] initWithLatitude:latitude
longitude:longitude];
if ([placemarkLocation distanceFromLocation:currentLocation] < 8046.72)
{
// add placemark to map
}
else
{
// don't
}
我有两个后续观察结果:
例如,如果问题是您正在Internet上下载一个巨大的KML文件(大小为几十或几百兆字节),则
MKMapView
的任何优化对整体性能的影响都可以忽略不计。这只是一个随机示例,但请确保您确实了解问题的根源。MKMapView
中添加了2000条注释花费了几秒钟,但这显然不是一个很好的UX(就几秒钟的延迟而言,但还有两千条注释的想法,您显然无法在视觉上区分它们)。 iPhone屏幕)。您建议抓住5英里内的地标,并为用户提供替代选择所有地标的选项。我可能会建议另一种方法:建议您不要查看
region
的visibleMapRect
或MKMapView
,而是显示属于该区域或MKMapRect
的注释,而不是编码这种“五英里或全部”的逻辑。或者,甚至更好的是,仅显示该区域内的100条注释。并且,如果将其挂接到 regionDidChangeAnimated
例程中,它将在需要时获得新的注释。关于ios - xcode KML Viewer仅在 map 上显示约5英里,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14660309/