背景
在学习(一)中[[MKMapKit学习总结(一)简单使用(地图点击)]],中已经介绍了。这里讲的是,替换mkmapkit显示的地图资源地址。
介绍
这里就是要给map加一层渲染层,要使用到的方法是:
* 添加
- (void)addOverlay:(id <MKOverlay>)overlay NS_AVAILABLE(10_9, 4_0);
* 移除
- (void)removeOverlay:(id <MKOverlay>)overlay NS_AVAILABLE(10_9, 4_0);
正式开搞
资源地址
首先要搞到资源地址,这在网上可以找到很多。我之前找到了,在这里贴出来,可以直接使用。
NSString * const mapGoogleStandard = @“http://mt0.google.cn/vt/lyrs=m&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}”;
NSString * const mapGoogleSatellite = @"http://mt0.google.cn/vt/lyrs=s&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}";
NSString * const mapGoogleTerrain = @“http://mt0.google.cn/vt/lyrs=p&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}”;
NSString * const mapOpencyclemap = @"http://b.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png";
NSString * const mapOpenstreetmap = @"http://tile.openstreetmap.org/{z}/{x}/{y}.png";
NSString * const mapLandscape = @"http://a.tile.opencyclemap.org/landscape/{z}/{x}/{y}.png";
NSString * const mapGaodeMap = @“http://wprd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}&scl=1”;
基本上这些也就够了,有谷歌的,必应的,高德的等等。这些复制到类名之前就可以了。
实现
现在把,写好两个方法,配置好,高德的矢量图地址和谷歌的卫星图地址。
- (MKTileOverlay *)googleTileOverlay
{
if (!_googleTileOverlay) {
_googleTileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:mapGoogleSatellite];
_googleTileOverlay.canReplaceMapContent = YES;
}
return _googleTileOverlay;
}
- (MKTileOverlay *)gaodeTileOverlay
{
if (!_gaodeTileOverlay) {
_gaodeTileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:mapGaodeMap];
_gaodeTileOverlay.canReplaceMapContent = YES;
}
return _gaodeTileOverlay;
}
::关键的来了::
接下来就只是调用一下就可以了😁
[_mapView addOverlay:self.gaodeTileOverlay];
这里写了一个简单的可以切换的方法,可以写一个开关进行适量图高德和卫星图谷歌进行切换:
- (void)changeTileOverlay:(BOOL)isStandard
{
if (isStandard) {
[_mapView removeOverlay:self.googleTileOverlay];
[_mapView addOverlay:self.gaodeTileOverlay];
}
else {
[_mapView removeOverlay:self.gaodeTileOverlay];
[_mapView addOverlay:self.googleTileOverlay];
}
}
搞定了。