0

我正在MapKit为我的项目使用,到目前为止它一直非常好。这是我用于显示和居中地图的一段代码。

CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude];
CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude];
CLLocationDistance meters = [locSouthWest distanceFromLocation:locNorthEast];


MKCoordinateRegion region;
region.center.latitude = (southWest.latitude + northEast.latitude) / 2.0;
region.center.longitude = (southWest.longitude + northEast.longitude) / 2.0;
region.span.latitudeDelta = meters / 111319.5;
region.span.longitudeDelta = 0.0;

[self.mapView setRegion:region animated:YES];

问题是,它在 iPhone 4和 iPhone 5上的工作方式不同

这是iPhone 4iOS5 和 iOS6 的结果相同):

iPhone 4

这是iPhone 5(使用相同的坐标):

iphone 5

有没有人有同样的经历?

4

2 回答 2

1

这些是导致差异的代码行:

region.center.latitude = (southWest.latitude + northEast.latitude) / 2.0;
region.center.longitude = (southWest.longitude + northEast.longitude) / 2.0;

由于屏幕尺寸不同,这必然会产生差异。

您可以在这里使地图居中的方法是使用mapView.centerCoordinate

于 2013-01-14T13:44:03.890 回答
1

MapKit 具有固定的缩放级别。设置地图的区域可确保该区域在地图中可见,但不会设置精确的缩放比例。这有几个好处,主要是您不能创建不成比例地缩放纬度和经度的地图(导致混乱和/或误导性的地图)。地图的框架大小不同,因此您选择的区域可以在每个设备上以不同的缩放级别显示。

作为一个实验,尝试在两个设备上将地图视图的框架设置为相同的大小。然后,如果您绝对需要地图以相同的比例显示,您可以做一些数学运算来根据地图的框架计算适当的区域。

于 2013-01-14T13:56:55.187 回答