次のコード(Apple WWDC 2010 TileMapの例に基づく)を使用して、UIMapViewにMKOverlayイメージをロードしています(これはviewDidLoadメソッドにある可能性があります)。
NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"];
TileOverlay *overlay = [[TileOverlay alloc] initWithTileDirectory:tileDirectory];
[map addOverlay:overlay];
次に、UIMapViewマップをこのオーバーレイの中央に配置しました。現時点では、緯度と経度を次のようにハードコーディングしています。
double myLatitude = ...;
double myLongitude = ...;
CLLocation *location = [[CLLocation alloc] initWithLatitude:myLatitude longitude:myLongitude];
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, 4000, 4000);
MKCoordinateRegion adjustedRegion = [map regionThatFits:viewRegion];
[map setRegion:adjustedRegion animated:YES];
これは正常に機能します。私は次のようにオーバーレイの中心を計算しようとしました:
double x, y;
x = MKMapRectGetMidX([overlay boundingMapRect]);
y = MKMapRectGetMidY([overlay boundingMapRect]);
CLLocationCoordinate2D coord = MKCoordinateForMapPoint(MKMapPointMake(x, y));
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(coord, 4000, 4000);
MKCoordinateRegion adjustedRegion = [map regionThatFits:viewRegion];
[map setRegion:adjustedRegion animated:YES];
しかし、これは機能しません。MKCoordinateForMapPointは、オーバーレイの外側の緯度/経度を返します。理由がわかりません。
誰かが解決策を提案できますか?
前もって感謝します...