2009-05-29 8 views
3

J'ai divisé l'affichage de ma carte google en nombre de pièces, Maintenant, je veux savoir si des marqueurs sont positionnés à l'intérieur d'une cellule de particules.google maps: Comment trouver si des marqueurs à l'intérieur de la carte

Une aide?

Plus loin Expliqué:

j'ai les limites de carte par

map.getBounds(); 
méthode

puis diviser plus loin dans le nombre de sous-limites.

aussi je puttée des marqueurs comme

map.addOverlay(markerObject); 

Maintenant, je veux trouver si des cellules (que j'ai obtenu en divisant la carte par des limites) est contenant des marqueurs ou non.

J'ai diviser les limites entières de carte en nombre de bornes sous

+0

s'il vous plaît expliquer comment vous avez exactement divisé la carte et comment voulez-vous garder la collection de marqueurs. –

Répondre

0

Alors gardez tous les marqueurs dans le tableau. Chaque marqueur a une méthode appelée get_position(). Une fois que vous avez terminé la division de la carte liée en petites sous-limites, vous avez juste besoin d'itérer sur les sous-limites et vérifier chaque fois que le marqueur à l'intérieur.
PS. Jetez également un oeil sur it, dans certains cas pourrait être utile.


Supposons que vous sur la sous cellule liée:

var sub_bounds = new Array(); 
// here you've pushed into an array the sub bounds 
for (var i = 0; i<sub_bounds.length; ++i) 
{ 
    for (var j = 0; j < markers.length; ++j) 
    { 
     var lat = markers[j].get_position().lat; 
     var lng = markers[j].get_position().lng; 
     if (sub_bounds[i].sw.lat<lat && lat<sub_bounds[i].ne.lat && 
      sub_bounds[i].sw.lng<lng && lng<sub_bounds[i].ne.lng) 
     // marker within cell, do whatever you need to do 
    } 
} 
+0

Presque là, Mais confus comme Si je suppose que je suis sur une cellule de sous-limites alors, Comment puis-je trouver cela, cette cellule contient des marqueurs ou non? – Posto

+0

fait-il la même chose, comme sub_bounds [x] .containsLatLng (marqueurs [i] .getLatLng()) ?? – Posto

+0

yeap. merci pour le pointage, j'ai dû mieux regarder la référence de l'API. –

0

Voici une alternative à la solution ci-dessus sans réitération:

D'abord - la taille sont vos sub_bounds? Dites 10 degrés de latitude et de longitude chacun.

Deuxième - La position du marqueur est (étage (marker.lat/10), sol (marker.lng/10))

Troisième - Chaque marqueur est ajouté à la carte et est tombé dans un seau pour ce sous-domaine.

de sorte (40, -78) se situerait dans le seau (4,7) seau à-dire [ "4 ~ 7"]

Correction: résiderait dans godet (4, -7), à savoir bucket ["4 ~ -7"]

qui contiendrait tous les marqueurs entre 40 et 50 lat et -70 et -80 lng. Vous pouvez utiliser GLatLngBounds comme l'objet qui contient tous ces marqueurs dans chaque compartiment, ce qui vous donnerait un bon ensemble de méthodes à utiliser, comme le calcul du centre du seau en fonction des marqueurs qui s'y trouvent actuellement.

Questions connexes