我正在开发一款使用MKOverlay视图在Google基本地图上叠加我自己的自定义地图的应用。但它显示地图如下:
但是我必须显示如下所示的地图:
我的代码如下:
- (NSArray *)tilesInMapRect:(MKMapRect)rect zoomScale:(MKZoomScale)scale
{
NSInteger z = zoomScaleToZoomLevel(scale);
NSInteger minX = floor((MKMapRectGetMinX(rect) * scale) / TILE_SIZE);
NSInteger maxX = floor((MKMapRectGetMaxX(rect) * scale) / TILE_SIZE);
NSInteger minY = floor((MKMapRectGetMinY(rect) * scale) / TILE_SIZE);
NSInteger maxY = floor((MKMapRectGetMaxY(rect) * scale) / TILE_SIZE);
NSMutableArray *tiles = nil;
NSInteger tilesAtZ = pow(2, z);
// NSLog(@"max x and max y is:::%d %d",maxX,maxY);
for (NSInteger x = minX; x <maxX; x++) {
for (NSInteger y = minY; y <maxY; y++) {
// OSM
//NSString *tileKey = [[NSString alloc] initWithFormat:@"%d/%d/%d", z, x, y]; // was flippedY
// NSInteger flippedY = abs(y + 1 - tilesAtZ);
// Google maps
NSString *tileKey = [[NSString alloc] initWithFormat:@"x=%d&y=%d&z=%d", x, y, z];
// NSString *tileKey = [[NSString alloc]
// initWithFormat:@"x=%d&y=%d&z=%d", x, flippedY, z];
if (!tiles) {
tiles = [NSMutableArray array];
}
NSLog(@"x y and z are:::%d %d %d",x,y,z);
MKMapRect frame = MKMapRectMake((double)(x * TILE_SIZE) / scale,
(double)(y * TILE_SIZE) / scale,
TILE_SIZE/scale,
TILE_SIZE/scale);
// NSLog(@"frame is::%f %f %f %f",(double)(x * TILE_SIZE) / scale,(double)(y * TILE_SIZE) / scale, TILE_SIZE / scale, TILE_SIZE / scale);
ImageTile *tile = [[ImageTile alloc] initWithFrame:frame path:tileKey];
[tiles addObject:tile];
[tile release];
[tileKey release];
}
}
// NSLog(@"tiles are ::%@",tiles);
return tiles;
}
请帮助我获得我需要的输出。 提前谢谢。
答案 0 :(得分:0)
您只需将初始区域设置为世界(常量MKMapRectWorld),如下所示:
MKCoordinateRegion worldRegion = MKCoordinateRegionForMapRect(MKMapRectWorld);
map.region = worldRegion;
通常将此代码放在viewDidLoad中:初始化MKMapView。