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

一、设置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 用高德加载谷歌瓦片图层)