Affichage de plusieurs marqueurs sur une carte avec leurs propres fenêtres d'informations
J'ai besoin d'afficher plusieurs marqueurs sur une carte, chacun avec leur propre
infowindow. J'ai créé les marqueurs individuels sans problème,
mais vous ne savez pas comment créer le infowindows pour chaque.
Je suis de générer une carte à l'aide de la V3 de l'API dans un ASP de site web,
avec des marqueurs être créé à partir d'un ensemble de DB records. Les marqueurs sont
créé en parcourant un rs et la définition d'un marqueur() avec le
les variables pertinentes:
var myLatlng = new google.maps.LatLng(lat,long);
var marker = new google.maps.Marker({
map: map,
position: myLatlng,
title: 'locationname',
icon: 'http://google-maps-icons.googlecode.com/files/park.png'
});
C'est la création de tous les marqueurs dans leurs emplacements corrects.
Ce que je dois faire maintenant, et je ne suis pas sûr de la façon de les atteindre est de donner à chaque
de leur propre infowindow que je peux utiliser pour l'affichage
des informations et des liens pertinents pour ce marqueur.
Source
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script language="javascript">
$(document).ready(function() {
//Google Maps
var myOptions = {
zoom: 5,
center: new google.maps.LatLng(-26.66, 122.25),
mapTypeControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP,
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.SMALL
}
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
<!-- While locations_haslatlong not BOF.EOF -->
<% While ((Repeat1__numRows <> 0) AND (NOT locations_haslatlong.EOF)) %>
var myLatlng = new google.maps.LatLng(<%=(locations_haslatlong.Fields.Item("llat").Value)%>,<%=(locations_haslatlong.Fields.Item("llong").Value)%>);
var marker = new google.maps.Marker({
map: map,
position: myLatlng,
title: '<%=(locations_haslatlong.Fields.Item("ldescription").Value)%>',
icon: 'http://google-maps-icons.googlecode.com/files/park.png',
clickable: true,
});
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
locations_haslatlong.MoveNext()
Wend
%>
<!-- End While locations_haslatlong not BOF.EOF -->
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
google.maps.event.addListener(marker, 'dblclick', function() {
map.setZoom(14);
});
});
OriginalL'auteur thewinchester | 2010-05-20
Vous devez vous connecter pour publier un commentaire.
Le problème est dans votre appel à
addListener()
Tandis que vous parcourez votre jeu d'enregistrements et d'écrire le code javascript, encore et encore et encore et encore pour ajouter un marqueur à la carte, vous appeler l'écouteur d'événement une fois. Aussi, vous n'avez jamais réellement créer les objets de la InfoWindow type, donc vous n'avez rien à appeler
open()
.La rapide et sale solution est d'ajouter ce après la création de votre
marker
mais avant la fin de votreWhile
boucle.Mais ne pas le faire, vous êtes à l'aide de VB pour écrire totalement superflus Javascript pour vous, quand vous pourriez être à l'aide de VB pour aller chercher ce dont vous avez besoin, puis de les laisser Javascript faire le travail que vous avez besoin de faire avec les données.
La mieux moyen de faire ce que vous essayez de faire est de réécrire votre VB pour créer un tableau d'objets Javascript, chacun contenant une du parc de l'information. Ensuite, l'utilisation de Javascript pour faire une boucle sur ce tableau et configurer les marqueurs et leurs associés infoWindows pour vous.
Décrivant la solution proposée:
toutes mes excuses, j'ai eu une faute de frappe dans le tableau de la génération de la partie. (Lorsque nous remplir de
title
etinfoWindowContent
nous nous attendons à cordes, et devrait donc mettre des guillemets autour de la data. J'avais quitté de ma réponse originale à cette question.) J'ai édité ma réponse.Merci, d'avoir enfin compris.
Excellent! Content d'avoir pu aider!
Juste essayer de comprendre la "bonne" façon de le faire - semble impressionnant. ...Je pense que tu veux dire: locations_array[x]
OriginalL'auteur Sean Vieira
Ici est quelque chose qui fonctionne (RoR /Rails /Ruby on Rails):
Il y avait un problème dans la VB/... code qui a été répondu avant, l'infowindow objet doit être unique par cliquable marqueur. Démo de: http://www.geodepollution.org/
OriginalL'auteur user379217
Ici est une excellente solution.
http://you.arenot.me/2010/06/29/google-maps-api-v3-0-multiple-markers-multiple-infowindows/
OriginalL'auteur Colin Wiseman
Cela semble assez bon.
http://www.usnaviguide.com/v3maps/v3multipleinfowindows.htm
OriginalL'auteur Sarkie
J'ai essayé le code de Sean Vieira, j'ai eu du mal à obtenir de l'infowindow me montrer même correspondant marqueurs Info.
Si vous avez le même problème, essayez:
Ici nous en sommes info (vous pouvez garder n'importe quel nom ) et puis ce dernier va l'utiliser.
prochaine voir le Contenu, de sorte que nous sommes en utilisant les informations que nous voulons pour définir le Marqueur
Cela a fonctionné pour moi.
Ref: https://tommcfarlin.com/multiple-infowindows-google-maps/
OriginalL'auteur Raj