指定された座標と getTileUrl() のズーム レベルに基づいて有効なタイル URL を返すカスタムImageMapTypeを実装しました。
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 以上に増やすことで、タイルがある場所を超えてズームすることができます (もちろん、タイルは表示されませんが、マーカーとポリラインは機能します)。 . この場合、タイルを前のズーム レイヤーから引き伸ばしたいと思います (ズーム レベルを変更するときのトランジション効果と同じ方法で)。
出来ますか?もしそうなら、どのように?