我已经实现了一个自定义ImageMapType,它根据给定的坐标和 getTileUrl() 的缩放级别返回有效的平铺 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
});
对于缩放级别 11 到 16,我有 128x128 个图块。通过将 ImageMapTypeOptions 对象的 maxZoom 属性增加到 16 以上,可以放大到有图块的位置(但当然不会出现图块,但标记和折线确实有效) . 在这种情况下,我希望从上一个缩放层拉伸瓷砖(与更改缩放级别时的过渡效果相同)。
可能吗?如果是这样,怎么做?