2009-05-28 8 views
0

Je souhaite diviser la zone d'affichage de la carte en plusieurs parties égales. Par exemple: 10 parties horizontalement et 15 parties verticales, résultant en 150 parties égales.Comment diviser un affichage Google Maps en un nombre égal de parties?

Je ne sais pas si Google Maps soutenir une telle chose ...

map.getBounds() retour total de la zone visible; donc,

var bounds = map.getBounds(); 
alert("main: "+bounds.isEmpty()); 
    var southWest = bounds.getSouthWest(); 
    var northEast = bounds.getNorthEast(); 
    var tileWidth = (northEast.lng() - southWest.lng())/10; 
    var tileHeight = (northEast.lat() - southWest.lat())/2; 

    for (var x=0; x < 10 ; x++) 
{ 
    for (var y=0; y < 2 ; y++) 
    { 
    var northLat = bounds.getNorthEast().lat() + (tileHeight * y); 
    var westLng = bounds.getSouthWest().lng() + (tileWidth * x); 
    var southLat = northLat + tileHeight; 
    var eastLng = westLng + tileHeight; 

      var tileBounds = new GLatLngBounds(new GLatLng(southLat, westLng), new GLatLng(northLat, eastLng)); 
    alert(tileBounds.isEmpty()); 

    } 
} 

maintenant le problème est tileBounds.isEmpty() retourne TRUE !!

Je ne peux pas trouver où il me manque quelque chose !! De l'aide !!

+0

Je ne sais pas pourquoi votre getBounds() est de renvoyer une objet GLatLngBounds vide. Essayez quelques-uns des autres appels "metrics" sur l'objet map (comme getSize(), getCenter etc ...). À quel point appelez-vous ce code, la page de la carte a-t-elle fini de se charger? Peut-être inclure un lien vers votre exemple? – RedBlueThing

+0

Le problème est résolu, je faisais mal avec les coordonnées x1, y1 et x2, y2 pour l'entrepreneur GLatLngBounds. Merci beaucoup. – Posto

+0

Salut vous voudrez peut-être regarder dans mon code: http://stackoverflow.com/questions/27221730/divide-a-path-into-equal-parts-in-google-map – maskarih

Répondre

1

Je suppose que vous êtes après les coordonnées de la région pour les 150 plus petites tuiles? Map.getBounds() renvoie un objet GLatLngBounds. Cela inclut les méthodes getSouthWest() et getNorthEast(). Donc, à partir de la latitude/valeurs de longitude de la gauche en bas et les coins supérieurs de la main droite de la carte visible on pouvait obtenir les coordonnées de l'ensemble des 150 régions plus petites:

  • diviser la largeur (la longitude de getNorthEast() - longitude de getSouthWest()) par 15, pour déterminer la largeur de la tuile. Diviser la hauteur (latitude de getNorthEast() - latitude de getSouthWest()) par 10, pour déterminer la hauteur des tuiles.
  • calculer les coordonnées d'une cellule particulière en fonction de son décalage en x et y multiplié par la largeur et la hauteur.

Donc, pour instancier un GLatLngBounds (sw: GLatLng, ne: GLatLng) pour un indice cellulaire particulier (x, y):

// bounds is the map.getBounds() result 
northLat = bounds.getNorthEast().lat() + (tileHeight * y); 
westLng = bounds.getSouthWest().lng() + (tileWidth * x); 
southLat = northLat + tileHeight; 
eastLng = westLng + tileHeight; 

tileBounds = new GLatLngBounds (new GLatLng (southLat, westLng), new GLatLng (northLat, eastLng)); 
+0

Merci beaucoup, je suis presque là. Mais confus sur Comment obtenir les coordonnées d'une cellule particulière et comment obtenir son décalage en x et y? – Posto

+0

Je vais mettre à jour ma réponse avec ce genre de choses ... – RedBlueThing

+0

juste une minute, tileHeight et tileWidth Je vais avoir bye, tileWidth = (bounds.getNorthEast.lng() - bounds.getSouthWest.lng())/dix; TileHeight = (bounds.getNorthEast.lat() - bounds.getSouthWest.lat()) tileHeight = (bounds.getNorthEast.lat() - bounds.getSouthWest.lat())/15; mais comment récupérer x et y pour obtenir la valeur northLat ou westLng? – Posto

Questions connexes