Я пытаюсь наложить на Google Maps.Я сгенерировал плитки моего изображения с помощью maptiler, но пример, сгенерированный maptiler, относится к v2, и я хочу использовать v3.Пример, сгенерированный maptiler, также очень сложен и выполняет некоторые ненужные операции с непрозрачностью.Теперь v3 GM сильно изменился по сравнению с v2, и у меня есть некоторые проблемы для генерации LatLng определенной точки на экране.getProjection () остается неопределенным, что бы я ни делал, есть идеи, как получить проекцию?
<script>
var mapBounds = new google.maps.LatLngBounds();
var mapMinZoom = 8;
var mapMaxZoom = 14;
var overlay;
var maptiler = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
if ((zoom < mapMinZoom) || (zoom > mapMaxZoom)) {
return "none.png";
}
var ymax = 1 << zoom;
var y = ymax - coord.y -1;
var tileBounds = new google.maps.LatLngBounds(
overlay.getProjection().fromDivPixelToLatLng( new google.maps.Point( (coord.x)*256, (coord.y+1)*256 ) , zoom ),
overlay.getProjection().fromDivPixelToLatLng( new google.maps.Point( (coord.x+1)*256, (coord.y)*256 ) , zoom )
);
if (mapBounds.intersects(tileBounds)) {
return "" + zoom + "/" + coord.x + "/" + (Math.pow(2,zoom)-coord.y-1) + ".png";
} else {
return "none.png";
}
},
tileSize: new google.maps.Size(256, 256),
isPng: true
});
var map;
function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"));
map.setZoom(11);
map.setMapTypeId('satellite');
mapBounds.extend(new google.maps.LatLng(50.9388615939, 3.80480816501));
mapBounds.extend(new google.maps.LatLng(51.4402541425, 4.73612507791));
map.fitBounds(mapBounds);
overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);
map.overlayMapTypes.insertAt(0, maptiler);
}
</script>
часть наложения - это хак, который я нашел в интернете и который должен был привести вас к проекции.к сожалению, это не сработало.Любые идеи, как это исправить?в V2 вы могли бы сделать что-то вроде этого:
var mercator = new GMercatorProjection()
mercator.fromPixelToLatLng( new GPoint( (tile.x)*256, (tile.y+1)*256 ) , zoom )
Но это невозможно в v3.
Кто-нибудь, кто может помочь?
Пример, сгенерированный maptilerможно найти здесь:
http://gmapsexample.staging1.kunstmaan.be/googlemapsv2.html
Это простой пример в v3, который работает:
http://gmapsexample.staging1.kunstmaan.be/googlemapsv3_simple.html
, но я хочу все, кромекарта должна быть определенного цвета, поэтому вот пример, который я пытаюсь заставить работать:
http://gmapsexample.staging1.kunstmaan.be/googlemapsv3.html
спасибо,
Daan