我正在为我的项目使用 MapKit
,到目前为止它一直非常好。这是我用来显示和居中 map 的一段代码。
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 4(iOS5 和 iOS6 的结果相同):
这里是 iPhone 5(使用相同的坐标):
有人遇到同样的情况吗?
最佳答案
MapKit 具有固定的缩放级别。设置 map 区域可确保该区域在 map 中可见,但不会设置确切的缩放比例。这有几个好处,主要的一个是您不能创建不成比例地缩放纬度和经度的 map (导致混淆和/或误导性 map )。 map 的框架大小不同,因此您选择的区域可以在每个设备上以不同的缩放级别显示。
作为实验,尝试将 map View 的框架在两个设备上设置为相同大小。然后,如果您绝对需要 map 以相同的比例显示,您可以进行一些数学运算,根据 map 的框架计算出适当的区域。
关于iphone - iPhone 4 和 iPhone 5 上的不同 map 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318887/