Jai créé un type de carte personnalisé à laide de lAPI Google Maps.

Jai utilisé maptiler pour créer les différentes couches de zoom et le 0 la couche (vraiment agrandie) est une tuile de 256 x 256. Limage ne couvre cependant que 134 x 112.

Je veux être en mesure de rendre les coordonnées de la carte par rapport à lensemble de la carte et non aux coordonnées terrestres par défaut de Google Maps. Par exemple, le coin supérieur gauche devrait être (0,0) tandis que le coin inférieur droit devrait être (50,50).

Jai reçu laide de Heitor Chang ici: https://stackoverflow.com/questions/11192281/can-i-reset-latlng-coordinates-for-a-custom-map-type

Le problème se situe ici:

dayzProjection.prototype.fromLatLngToPoint = function(latlng) { // pixel size of tile at zoom 0 var max = 134; // define bottom-right corner as (50, 50) var x = max * latlng.lng() / 50; var y = max * latlng.lat() / 50; return new google.maps.Point(x, y); }; dayzProjection.prototype.fromPointToLatLng = function(pixel) { // inverse conversion var lng = pixel.x / max * 50; var lat = pixel.y / max * 50; return new google.maps.LatLng(lat, lng); }; 

Quelquun peut-il maider à transformer ces coordonnées?

Cela peut aider: https://developers.google.com/maps/documentation/javascript/maptypes#Projections

Réponse

Il est en fait possible de placer votre coin supérieur gauche à 0,0 et votre coin inférieur droit à 50,50, Si tu veux ça. Bien sûr, vous pouvez également placer le coin inférieur droit à 10,10, ou autre chose, dans les limites: -90 / + 90 pour la latitude et -180 / + 180 pour la longitude.

La proportion doit être:

/* ****************************************** Custom Projection - CARTESIAN ****************************************** */ function CartesianProjection() { // map size at zoom 0 is equal to tile size this.tileSize = 256; }; CartesianProjection.prototype.fromLatLngToPoint = function(latLng) { var x = (latLng.lng() / 50) * this.tileSize; var y = (latLng.lat() / 50) * this.tileSize; return new google.maps.Point(x, y); }; CartesianProjection.prototype.fromPointToLatLng = function(point, noWrap) { var lng = (point.x / this.tileSize) * 50; var lat = (point.y / this.tileSize) * 50; return new google.maps.LatLng(lat, lng, noWrap); }; 

Ensuite, vous devez placer le centre de la carte sur LatLng (25,25) dans les options de la carte.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *