2010-03-30 4 views
0

Je veux faire des "cartes WiFi" et j'ai un problème avec cela, je veux avoir 3 icônes OPEN/WEP/WPA, et beaucoup de marqueurs, et tous les marqueur avec propre infowindow, et seulement 1 infowindow sur le dessus, donc quand je vais cliquer sur # 1 et puis # 2 puis # 1 va se cacher. Et si je vais avoir des marqueurs XXXX il y aura un problème avec eux sur la carte en zoom arrière, il est possible de faire comme quand beaucoup de marqueurs dans un endroit ne s'afficheront pas en zoom arrière mais en zoom oui?Google maps api v3 - plusieurs marqueurs, plusieurs infowindows, 3 icônes

J'ai toutes les informations sur les réseaux dans la base de données MySQL, donc en PHP sera facile de le montrer comme dans le tutoriel sur la documentation google maps officiel/v3/overlays.html # ComplexIcons < - donc suivre ce que je peux avoir par exemple

var nodes = [ 
['WKKOZ',50.192843,18.967801,nodewep,1], 
['airlive',50.193056,18.967974,nodeopen,2], 
['Zurawia-3',50.198398,18.974723,nodeopen,3], 
['siec dol',50.19303,18.96796,nodewep,4], 
['KP_8_1',50.193092,18.96801,nodewep,5], 
['Natalia',50.19286,18.967812,nodewpa,6], 
['Z104',50.192591,18.967588,nodewep,7], 
['D2',50.192499,18.96876,nodewep,8], 
['Niesia',50.192474,18.968239,nodewpa,9], 
['boolean',50.192539,18.967545,nodewpa,10], 
['neostrada_0d65',50.192179,18.96758,nodewep,11], 
['neostrada_2d38',50.192216,18.96761,nodewep,12], 
['Belkin_G_Wireless_9B7BF7',50.192191,18.969261,nodeopen,13], 
['Trans_FijPn',50.1939,18.979565,nodeopen,14], 
['dlinklis',50.193113,18.968024,nodewpa,15] 

S'il vous plaît aidez-moi :)

BTW: ma base de données MySQL ont le format http://wklej.to/7Puw/html

Répondre

1

Je pense que vous demandez sur la façon d'avoir un grand nombre de marqueurs sur la carte qui seront cachés au plus zoo m niveaux. C'est ce qu'on appelle le clustering de marqueurs.

Il y a quelques bibliothèques Javascript qui mettent en œuvre Clustering du côté client et sont très faciles à intégrer dans un mashup existant:

  • MarkerClusterer - Je used cela pour un mashup et trouvé facile à intégrer, avec un bel ensemble d'icônes par défaut.
  • ClusterMarker - Je n'ai pas utilisé celui-ci, mais il semble assez fonctionnel.

Vous pouvez également lire ce qui va blog post sur les différentes alternatives ou ce blog post qui traite des détails sur le regroupement côté serveur.

+0

thx, mais que « le regroupement » est un seul point de ma question: p Je ne sais toujours pas comment fait plusieurs marqueurs, infowindows multiples, 3 icônes J'essaie de coder en http://wklej.org/hash/ea86da22681/suivez "documentation/v3/overlays.html # ComplexIcons" et cela ne fonctionne pas; – Adam

1

J'ai récemment rencontré exactement le même problème et j'ai réussi à trier la plus grande partie avec l'aide de Sean Vieira.

La réponse à cette question est ici: Display multiple markers on a map with their own info windows

La variation de votre scénario est que vous souhaitez ajouter simplement un champ supplémentaire à votre tableau dans lequel vous souhaitez spécifier le chemin d'URL au marqueur que vous souhaitez utiliser.

Ensuite, lors de la création d'un marqueur (à partir de var marker = new google.maps.Marker), vous appelez la valeur de votre tableau pour la variable icon. Comme vous n'avez que trois types d'icônes, et je suppose que vous remplissez votre enregistrement à partir d'une base de données, vous devez tester le type de point d'accès et écrire le chemin d'URL correspondant au type de marqueur à cet endroit (Je suis un ASP et pas un homme PHP, donc excuse l'utilisation du terme écrire n'est pas correct).

Ma solution ne traite pas correctement les informations d'infowindows. Une fois ouverts, ils resteront ouverts à moins d'être fermés manuellement par l'utilisateur. J'ai vu des solutions pour en fermer d'autres alors qu'une nouvelle est ouverte, mais je n'ai pas encore besoin de les mettre en œuvre.

0

Je sais c'est une vieille question, mais comme je l'ai une réponse pour cela je vais écrire pour les générations futures de voir :)

La solution au problème de infowindow peut être résolu assez facilement. Créez une variable globale appelée currentWindow. Chaque fois qu'un utilisateur appuie sur un marqueur, l'eventlistener vérifie si currentWindow = infoWindow. Si ce n'est pas le cas, fermez currentWindow et définissez-le comme la nouvelle infowindow. Pur et simple, n'oubliez pas d'ouvrir la nouvelle infowindow aussi bien.

Questions connexes