如何创建一个自定义maplayer,我们可以在其中增加超过21的缩放级别

时间:2016-06-16 05:45:48

标签: android google-maps

googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);

此处 MAP_TYPE_NONE 是google默认地图类型之一,如果我可以创建一个这样的地图图层,它会帮助我提高缩放级别。

由于我听说我们可以通过创建自己的自定义地图图层来提高缩放级别,所以请帮助创建具有最大缩放级别的自定义图层?

1 个答案:

答案 0 :(得分:1)

你可以添加你想要的任何自定义地图图层,最美的是添加WMS服务或OSM地图。

关于WMS,这是我对另一个主题的回答:https://stackoverflow.com/a/33912249/4120431

对于OSM,我通常使用mapquest(其级别超过21):

 private static TileProvider mMapQuestTileProvider = null;
 public static TileProvider getMapQuestOSMBackGroundTileProvider() {
        if (null == mMapQuestTileProvider) {
            mMapQuestTileProvider = new UrlTileProvider(256, 256) {

                @Override
                public URL getTileUrl(int x, int y, int z) {
                    try {
                        String f = "http://otile1.mqcdn.com/tiles/1.0.0/osm/%d/%d/%d.png";
                        return new URL(String.format(f, z, x, y));
                    } catch (MalformedURLException e) {
                        return null;
                    }
                }
            };

        }
        return mMapQuestTileProvider;
    }

------------
TileProvider tileProvider = getMapQuestOSMBackGroundTileProvider();
TileOverlay tileOverlay = myMap.addTileOverlay(new TileOverlayOptions()
.tileProvider(tileProvider));

希望有所帮助

PS:您必须将谷歌地图类型设置为NONE,以便级别超过21,否则您将受到可用的最低级别(gmaps地图中的21)的限制