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 4です( iOS5 と iOS6 で同じ結果):

iphone 4

これがiPhone 5です(同じ座標を使用):

iPhone 5

誰かが同じことを経験していますか?

4

2 に答える 2

1

MapKit には固定ズーム レベルがあります。マップの地域を設定すると、その地域がマップに表示されるようになりますが、正確なズームは設定されません。これにはいくつかの利点があります。主な利点は、緯度と経度を不均衡にスケーリングするマップを作成できないことです (マップが混乱したり、誤解を招く可能性があります)。マップのフレームはサイズが異なるため、選択した地域はデバイスごとに異なるズーム レベルで表示できます。

実験として、マップ ビューのフレームを両方のデバイスで同じサイズに設定してみてください。次に、マップを同じ縮尺で表示する必要がある場合は、マップのフレームに基づいて適切な領域を計算するためにいくつかの計算を行うことができます。

于 2013-01-14T13:56:55.187 に答える
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 に答える