Google maps api v3 – marqueurs multiples, infowindows multiples, 3 icônes

Je voulais faire des "cartes WiFi" et j'ai du mal à le faire, je veux avoir 3 icônes ouvertes / WEP / WPA, et beaucoup de marqueurs, et chaque marqueur avec son propre infowindow, et seulement 1 infowindow sur le dessus, alors quand je le ferai Cliquez sur # 1 puis sur # 2 puis # 1 se cachera. Et si j'aurai des marqueurs XXXX, il y aura un problème avec eux sur la carte dans le zoom arrière, il est possible de le faire comme quand beaucoup de marqueurs dans un endroit ne s'afficheront-ils pas dans le zoom arrière mais dans le zoom oui?

J'ai toutes les informations sur les réseaux dans la base de données MySQL, donc, en PHP, il sera facile de le montrer comme dans le didacticiel sur la documentation officielle google maps / v3 / overlays.html # ComplexIcons <- alors, suivez-moi, 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] 

Aidez-moi, s'il vous plaît!:)

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

Je pense que vous demandez comment avoir un grand nombre de marqueurs sur la carte qui se cachent à des niveaux de zoom plus élevés. C'est ce qu'on appelle le regroupement des marqueurs.

Il existe quelques bibliothèques Javascript qui implémentent le regroupement côté client et sont très faciles à intégrer dans un mashup existant:

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

Vous pouvez également lire cette publication sur le blog qui traite les différentes alternatives ou cette publication du blog qui traite des spécificités sur le clustering côté serveur.

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

La réponse à cette question est ici: Affichez plusieurs marqueurs sur une carte avec leurs propres fenêtres d'information

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

Ensuite, lors de la boucle pour créer le marqueur (à partir de var marker = new google.maps.Marker ), vous appelez la valeur de votre tableau pour la variable icon .

Comme vous ne disposez que de trois types d'icônes, et je suppose que vous allez remplir votre dossier à partir d'une base de données, vous devez tester le type de point d'accès et ensuite écrire le chemin d'URL pertinent pour le type de marqueur dans cet endroit (je suis un ASP et pas un homme PHP, donc excusez l'utilisation du terme écriture n'est pas correct).

Ma solution ne traite pas proprement les infowindows. Une fois qu'ils sont ouverts, ils resteront ouverts à moins qu'ils ne soient fermés manuellement par l'utilisateur. J'ai vu des solutions là-bas pour fermer les autres car une nouvelle est ouverte, mais elles n'ont pas encore été mises en œuvre.

Je sais que c'est une question ancienne, mais comme j'ai une réponse, je l'écris pour les générations futures pour voir 🙂

La solution au problème infowindow peut être résolue 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 configurez-le comme étant le nouvel infowindow. Pure et simple, n'oubliez pas d'ouvrir la nouvelle infowindow aussi.