美文网首页
swift 用高德加载谷歌瓦片图层

swift 用高德加载谷歌瓦片图层

作者: SuJunJun | 来源:发表于2019-11-01 17:47 被阅读0次

    一、设置MATileOverlay

    1.根据URL模版(即指向相关图层图片的URL)创建MATileOverlay对象。
    2.设置MATileOverlay的可见最大/最小Zoom值。
    3.设定MATileOverlay的可渲染区域。
    4.将MATileOverlay对象添加到MAMapView中。
    5.实现MAMapViewDelegate的mapView:viewForOverlay:函数,在瓦片显示在地图View上。

    let tileOverlay = MATileOverlay.init(urlTemplate: "[https://mt3.google.cn/maps/vt?lyrs=y@194&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}"](https://mt3.google.cn/maps/vt?lyrs=y@194&hl=zh-CN&gl=cn&x=%7Bx%7D&y=%7By%7D&z=%7Bz%7D%22))
    
            /* minimumZ 是tileOverlay的可见最小Zoom值. */
    
            tileOverlay!.minimumZ = 1
    
            /* minimumZ 是tileOverlay的可见最大Zoom值. */
    
            tileOverlay!.maximumZ = 20
    
            /* boundingMapRect 是用来 设定tileOverlay的可渲染区域. */
    
            tileOverlay!.boundingMapRect = MAMapRectWorld
    
            mapView.add(tileOverlay)
    

    二、代理方法调用

    func mapView(_ mapView: MAMapView!, rendererFor overlay: MAOverlay!) -> MAOverlayRenderer! {
            
    //        if (overlay.isKind(of: MATileOverlay.self))
    //        {
    //
    //        }
    //        return nil;
            let renderer = MATileOverlayRenderer.init(tileOverlay: (overlay as! MATileOverlay))
            return renderer;
        }
    
    

    ps这里有个坑:
    如果不把if注释掉,那你在定位地方永远看不到谷歌的卫星图,因为这个是返回nil的时候是返回高德正常的图层,只有在国外才会显示Google的,所以要全部覆盖,就全部返回自己定义的图层。

    相关文章

      网友评论

          本文标题:swift 用高德加载谷歌瓦片图层

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