javascript - 如何在自定义 ImageMapType 实现中针对某些缩放级别拉伸(stretch)图 block ?

标签 javascript google-maps google-maps-api-3

我已经实现了自定义 ImageMapType根据 getTileUrl() 的给定坐标和缩放级别返回有效的图 block URL。

new google.maps.ImageMapType({
    name: 'Satellite',
    getTileUrl: function(coord, zoom) {
        var p_type = "satellite",
            z = zoom - 11,
            corr = Math.pow(2, zoom) - Math.pow(2, z),
            p_x = coord.x - corr,
            p_y = coord.y - corr,
            maxCoord = Math.pow(2, (z+1)) - 1;

        if (p_x > maxCoord || p_y > maxCoord || p_x < 0 || p_y < 0) {
            return 'http://maps.gstatic.com/intl/en_us/mapfiles/transparent.png';
        }

        p_x = (p_x < 16 ? '0' : '') + p_x.toString(16);
        p_y = (p_y < 16 ? '0' : '') + p_y.toString(16);

        return 'http://map.example.com/' + p_type + '/' + (z + 1) + '/tile_' + p_y + p_x + '.jpg';
    },
    tileSize: new google.maps.Size(128, 128),
    isPng: false,
    minZoom: 11,
    maxZoom: 16
});

我有 128x128 的图 block ,用于缩放级别 11 到 16。通过将 ImageMapTypeOptions 对象的 maxZoom 属性增加到 16 以上,可以缩放到图 block 之外(当然不会出现图 block ,但标记和多段线确实有效)。在这种情况下,我希望从前一个缩放层拉伸(stretch)图 block (与更改缩放级别时的过渡效果相同)。

这可能吗?如果是,怎么办?

最佳答案

很好的问题。这在理论上应该可以在客户端上完成,但作为 getTileUrl的方法 google.maps.ImageMapType object 必须返回 URL,使用该 object 时必须在服务器上返回 URL。

另一种可能性是使用更通用的 google.maps.MapType 改为对象并定义您自己的 getTile方法。然后你可能会返回你自己的拉伸(stretch) <img>元素。

关于javascript - 如何在自定义 ImageMapType 实现中针对某些缩放级别拉伸(stretch)图 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279630/

相关文章:

javascript - Google Map API v3 - 在标记上居中 map

javascript - 呈现angular.js ui-map指令后如何触发 map 调整大小事件?

javascript - Angular Cookies.remove 不起作用

javascript - 为什么 lodash `_.all([true, true, true], true);` 返回 `false` ?

javascript - jQuery .val() 不会生成 'change'

javascript - 如何使用 Google Maps API(网络)显示室内楼层

安卓谷歌地图 |两指滚动

android - 如何为 google map api v2 设置默认位置和缩放级别?

javascript - 当我在 Rails 应用程序中实现日期选择器时,为什么我的索引 View 不起作用

google-maps - 谷歌地图具有多个字符的标记标签