带有卫星基础地图和imageMapType叠加层的Google地图会增加缩放

时间:2014-09-26 17:49:19

标签: javascript google-maps-api-3

我在一个卫星mapType基本地图上显示一个ImageMapType作为叠加层。 基本地图似乎将我的区域中的最大缩放限制为19,如果我更改为Road mapType,我会得到更多级别。我有高分辨率的想象,我在叠加层中显示,我希望能够进一步放大。如果我使用ImageMapType作为基本地图,我可以放大我需要的所有内容,但我真的想显示卫星基础地图,然后继续放大图像,即使没有可用的卫星图像。 有没有办法实现这个?我唯一能想到的是创建一个自定义基本地图。

代码类似于此示例https://developers.google.com/maps/documentation/javascript/examples/maptype-image-overlay

谢谢!

我的代码:

var mapMinZoom = 10;
var mapMaxZoom = 25;
var zoom = 20;

function initialize() {
    map = new google.maps.Map(document.getElementById('map-canvas'), {
        center: new google.maps.LatLng(-34.567426059726316, -60.34467143006623),
        zoom: zoom,
        mapTypeId: google.maps.MapTypeId.SATELLITE,
        panControl: false,
        streetViewControl: false,
        maxZoom: mapMaxZoom

      });
    createImageLayer('imaginery', 'images')
 }

function createImageLayer(key, folder) {
        var mapBounds = new google.maps.LatLngBounds(new                                   google.maps.LatLng(-34.55771388565057, -60.367219001054764), new google.maps.LatLng(-34.55817334541287, -60.3209562599659));

        var imageMapTypeLayer = new google.maps.ImageMapType({
        minZoom: mapMinZoom,            
        maxZoom: mapMaxZoom,
        name: key,  
        getTileUrl: function(coord, zoom) {
            if ((zoom < mapMinZoom) || (zoom > mapMaxZoom)) {
               return "http://www.maptiler.org/img/none.png";
            }
            var ymax = 1 << zoom;
            var y = ymax - coord.y -1;

            var tileBounds = new google.maps.LatLngBounds(
                          map.getProjection().fromPointToLatLng( new google.maps.Point( (coord.x), (coord.y) )  ),
                          map.getProjection().fromPointToLatLng( new google.maps.Point( (coord.x), (coord.y)))
                      );

            // write a real condition here, so long this is always valid
            if (tileBounds.intersects(tileBounds)) {
                      return "/static/ui/"+ folder +   "/"+zoom+"/"+coord.x+"/"+y+".png";
            } else {
               return "http://www.maptiler.org/img/none.png";
            }
        },
        tileSize: new google.maps.Size(256, 256)
      });

    map.overlayMapTypes.push(imageMapTypeLayer)
}

编辑1 : 到目前为止,我已经设法通过监听zoom_changed事件并在缩放达到最大值时将基本地图更改为我的imageMapType并在用户缩小时将其更改回卫星。我想知道这个问题是否有更清洁的解决方案。

0 个答案:

没有答案