1

我正在使用以下代码(基于 Apple WWDC 2010 TileMap 示例)加载带有 MKOverlay 图像的 UIMapView(这可能在 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 返回叠加层外的纬度/经度。我不明白为什么。

任何人都可以提出解决方案吗?

提前致谢...

4

0 回答 0