我正在使用MKMapOverlay
和CoreLocation
绘制许多坐标,我希望能够在视图中包含它们。
我怎样才能包含它们?我考虑过在我的第一个和最后一个坐标之间取一个中间点,但是如果它不是直接路线或者它们最终位于同一个位置,那么可能会从屏幕上切下一些坐标。
例如,这将是一个示例,其中一些点被切割到右下角。 注意:这仅用于示例目的,路径是使用Google地图创建的,但在应用程序中,它将通过跟踪您的位置历史记录来创建。
同样,如果这是在iPhone上,我如何使用MKCoordinateRegion
使地图包含所有点?
答案 0 :(得分:1)
我认为您需要遍历所有坐标并找到北,东,南和西边界。然后,您可以根据所有值创建坐标区域。
也许您可以查看this question的实施帮助?
答案 1 :(得分:1)
尝试循环你的坐标并获得每个纬度和经度的最极端点(最远的北,南,东,西),然后取极值的平均值。然后创建一个区域并进行设置。
类似
for(int idx = 0; idx < points.count; idx++){
CLLocation* currentLocation = [points objectAtIndex:idx];
if(currentLocation.coordinate.latitude != -180 && currentLocation.coordinate.longitude != -180){
if(currentLocation.coordinate.latitude > maxLat)
maxLat = currentLocation.coordinate.latitude;
if(currentLocation.coordinate.latitude < minLat)
minLat = currentLocation.coordinate.latitude;
if(currentLocation.coordinate.longitude > maxLon)
maxLon = currentLocation.coordinate.longitude;
if(currentLocation.coordinate.longitude < minLon)
minLon = currentLocation.coordinate.longitude;
}
}
MKCoordinateRegion region;
region.center.latitude = (maxLat + minLat) / 2;
region.center.longitude = (maxLon + minLon) / 2;
region.span.latitudeDelta = (maxLat - minLat) + .3;
region.span.longitudeDelta = (maxLon - minLon) + .3;
[map regionThatFits:region];