MKMapKit学习总结(三)替换瓦片地址

2020-04-16  本文已影响0人  生锈的浪花

背景

在学习(一)中[[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];
    }
}

搞定了。

上一篇下一篇

猜你喜欢

热点阅读