API Google Maps – Afficher les informations pour tous les marqueurs ayant le même lat / long

Je mappe certains lieux de concert sur Google Maps, en utilisant des données de l’API de Songkick.com. J’appelle les données à l’aide de jQuery. Lors de la cartographie d’un concert, si un même lieu a plusieurs concerts programmés, tous les marqueurs sont placés exactement au même endroit. Cela signifie que seul le marqueur du concert le plus récent est visible, et que Google Maps infoWindow affiche uniquement les données du concert le plus récent.

Je voudrais faire en sorte que tous les concerts ayant lieu exactement à cette même latitude affichent leurs informations dans la fenêtre d’information. Ainsi, lorsque vous cliquez sur le marqueur, tous les spectacles programmés sont affichés dans infoWindow, pas seulement le plus récent.

Voici une partie de mon javascript:

function doSearch(locations) { deleteOverlays(); jQuery.getJSON("http://api.songkick.com/api/3.0/search/locations.json?query=" + locations + "&apikey=XXXXXXXX&jsoncallback=?", function(data){ var id = data.resultsPage.results.location[0].metroArea.id; jQuery.getJSON("http://api.songkick.com/api/3.0/metro_areas/" + id + "/calendar.json?apikey=XXXXXXXX&jsoncallback=?", function(data){ var bounds = new google.maps.LatLngBounds(); var point; $.each(data.resultsPage.results.event, function(i, item) { var event = item; point = new google.maps.LatLng( parseFloat(item.location.lat), parseFloat(item.location.lng)); var marker = new google.maps.Marker({ map : map, animation: google.maps.Animation.DROP, position : point }); markersArray.push(marker); var contentSsortingng = '

' + item.displayName + '

' + '

' + item.location.city + '

'; var infowindow = new google.maps.InfoWindow({ content: contentSsortingng }); google.maps.event.addListener(marker, 'click', function() { if (currentInfoWindow != null) { currentInfoWindow.close(); } infowindow.open(map, marker); currentInfoWindow = infowindow; });

Pour voir cette application en action, j’ai mis en place un site web temporaire.

http://129.219.78.186/~masgis/tward/songkick/Metro.html

Pour voir de quoi je parle, tapez le nom d’une grande ville, puis cliquez sur un marqueur qui tombe. Seul le concert le plus récent apparaîtra.

Merci d’avance, toute aide est très appréciée.

Il semble que l’appel de l’API SongKick renvoie un ID unique pour chaque site. Alors voici ce que vous pouvez faire:

  1. Ajoutez chaque object événement à un tableau.
  2. Extrayez les identifiants de lieu uniques des événements du tableau.
  3. Parcourez chaque ID de site unique en extrayant chaque événement avec cet ID de site et créez la chaîne de la fenêtre d’informations en parcourant ce sous-ensemble d’événements.
  4. Construisez le marqueur en utilisant les informations de la salle, en définissant la chaîne de la fenêtre d’information sur le marqueur.

Il s’agit d’un peu de code JavaScript, de boucles nestedes et d’un peu de performance, mais cela devrait suffire.