美文网首页
MKMapKit学习总结(三)替换瓦片地址

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

作者: 生锈的浪花 | 来源:发表于2020-04-16 11:48 被阅读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];
        }
    }
    

    搞定了。

    相关文章

      网友评论

          本文标题:MKMapKit学习总结(三)替换瓦片地址

          本文链接:https://www.haomeiwen.com/subject/hcqrvhtx.html