1

我正在开发一个 iOS 应用程序,并且我正在努力实现这一目标,给定多个位置(纬度和经度),我想自动缩放我的地图并重新定位我的地图视图以包含所有位置。

我想出的解决方案是,给定任意数量的位置,我可以使用 for 循环来查找最高和最低纬度和经度。并且中心点应该是纬度/经度的最高/最低之间的中心位置。并且使用 MKCoordinateRegionMakeWithDistance,结合核心位置框架(distanceFromLocation),我可以计算最远位置和中心位置之间的距离,并在地图上显示该区域。

我的问题是,有没有更好的解决方案或框架可以处理这个问题?有没有我能找到的例子可以做到这一点?

4

2 回答 2

2

如果您知道最高和最低纬度和经度值,您至少可以通过使用MKCoordinateRegionMake代替来简化一些事情MKCoordinateRegionMakeWithDistance。也许是这样的:

CLLocationDegrees highestLatitude;
CLLocationDegrees lowestLatitude;
CLLocationDegrees highestLongitude;
CLLocationDegrees lowestLongitude;

// Calculate the above variable values...

// These calculations would have to be more complex if you need to handle the fact that longitude values wrap
CLLocationDegrees latitudeDelta = highestLatitude - lowestLatitude;
CLLocationDegrees longitudeDelta = highestLongitude - lowestLongitude;
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(lowestLatitude + (latitudeDelta / 2.0f), lowestLongitude + (longitudeDelta / 2.0f));
MKCoordinateSpan span = MKCoordinateSpanMake(latitudeDelta, longitudeDelta);
MKCoordinateRegionMake(center, span);
于 2013-08-12T00:13:12.810 回答
1

您也可以使用setRegion使用 longitudeSpan 和 latitudeSpan,这更简单,因为它避免了距离计算。

计算最小和最大纬度和经度。然后计算 latSpan 和 longSpan 从:max - min,然后使用中点计算中心 (minLat + latSpan / 2.0, minLon + lonSpan / 2.0)

于 2013-08-12T00:11:36.210 回答