Google Maps API V3 - Custom Tiles
-
15-10-2019 - |
Domanda
Attualmente sto lavorando su Google Maps API V3 su qui
Se si esegue lo zoom tra i 21 a 23, ci sarà una sovrapposizione di immagini sulla mappa. L'immagine richiede troppo tempo per il carico e ho deciso di spezzare in piastrelle diverse per facilitare il carico. Sto usando la taglierina automatica delle mattonelle di tagliare l'immagine in piastrelle.
Ho problemi con lo script;
var OrgX = 31551; // the Google Maps X value of the tile at the top left corner of your Photoshop document
var OrgY = 50899; // the Google Maps Y value of the tile at the top left corner of your Photoshop document
Prima domanda Come si fa a trovare i valori di X e Y dal documento di Photoshop?
Let dire se riesco a risolvere il primo quesito.
Seconda domanda è il codice corretto di seguito per visualizzare le piastrelle a seconda del livello di zoom? O mi manca i codici?
var BuildingsLayer = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
return "http://search.missouristate.edu/map/tilesets/baselayer/" + zoom + "_" + coord.x + "_" + coord.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true
});
map.overlayMapTypes.push(BuildingsLayer);
Soluzione
Invece di usare la taglierina automatica delle mattonelle, ho utilizzato e raccomandato MapTiler. Non solo fette l'immagine in piastrelle e genera anche uno script javascript piastrelle di usarlo.
Tuttavia, lo script è scritto in v2. È possibile modificare i codici di base:
v3 piastrelle di script
var maptiler = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
return zoom + "/" + coord.x + "/" + (Math.pow(2,zoom)-coord.y-1) + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true
});
var map;
function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"));
map.setCenter(new google.maps.LatLng(36.07, -112.19));
map.setZoom(11);
map.setMapTypeId('satellite');
map.overlayMapTypes.insertAt(0, maptiler);
}