Google Maps - Marker auf der selben Koordinate

Sinky

Grünschnabel
Hallo,
ich habe hier eine per API erstellte Google Map auf der ich Flickr Bilder importiere. Über geoRSS.

Code:
geoXml = new GGeoXml("http://api.flickr.com/services/feeds/photos_public.gne?id=79421064@N00&format=rss_200&georss=1");
map.addOverlay(geoXml);

Damit werden automatisch einzelne Marker mit Informationen über das Bild erstellt.

Mein Problem: Wenn mehrere Bilder die selbe Koordinate haben werden die Maker nur übereinander gelegt und kann nur auf den obersten Marker zugreifen.

Gibt es da eine Funktion die die Marker in einen einzelnen Maker zusammen fügt? Und in diesem Maker sind dann so etwas wie mehrere Seiten eingebaut? Ähnlich wie das auch bei der Flickr eigenen Map ist.

Danke für infos ... Gruß S!nky
 
Moin S!nky,

so eine Funktion gibt es meines Wissens nicht.

Du könntest das XML-File selbst parsen, und daraus die Marker zzgl. der GInfoWindows erstellen, dann sollte es möglich sein, wenn du bspw. die GInfoWindow-Knoten mit einer ID versiehst, die einen direkten Bezug zu den Koordinaten hat.

Hättest du diesen Bezug, dann könntest du per Skript so vorgehen: (sinngemäss)
Code:
try{
//Erweitere den Inhalt des Containers mit den Infos um neue Infos
}
catch(e)
{
//Erzeuge den Marker und den Container mit den Infos
}
 
Du kannst es so machen, dass du, sobald zwei Koordinaten aufeinanderfallen, beiden eine zufällige Position in der Nähe des eigentlichen Ziels gibst.
 
Zuletzt bearbeitet:
Danke euch beiden für die Ideen.

@Chumpler: Wenn ich die Koordinaten aus dem XML geparst habe, wie überprüfe ich dann den Radius?
 
Du kannst bei Geokoordinaten die Stellen hinter dem Komma ändern, bei der 4 oder 5 Stelle sinds glaub ich 200m.
 
Zuletzt bearbeitet:
Jo meine dann auch. Aber dann musste ich ja jede Koordinate mit jeder anderen vergleichen ob sie im Radius einer Koordinate ist.

Nicht unbedingt, wenn du meinen Vorschlag mit der Container-ID aufgreifst, würde sich der Vergleich erübrigen, weil in dem Falle, dass es bereits Daten zu einer Koordinate gibt, auch ein Container mit Daten dazu existiert.

Hier mal nen Beispiel, damit du ausprobieren kannst, wie ich es meine:
Code:
<body>
    <div id="infoWins" style="display:none"><!-- Container für die Info-Knoten--></div>
    <div id="map" style="width: 800px; height: 500px"></div>
    <script type="text/javascript">
    
    if(typeof console=='undefined')console={'info':function(s){window.status=s}}
    
    
    var map = new GMap2(document.getElementById("map"));
    var icon = new GIcon(G_DEFAULT_ICON);
    
    //Koordinaten+Infos
    var data=
      [
        [[52.52348,13.411494],'arm'],
        [[52.52323,13.413485],'aber sexy'],
        [[53.553407,9.992196],'reich und nass']
      ];
    
    //Nachkommastellen, auf die die Koordinaten gerundet werden sollen
    var precision=2;   

  for(i=0;i<data.length;++i)
    {
      //Koordinaten Runden
      var lat=data[i][0][0].toFixed(precision);
      var lng=data[i][0][1].toFixed(precision);
      
      //ID erzeugen
      var nodeId  = String(lat+'#'+lng).replace(/\D/g,'_');
      
      var latlng  = new GLatLng(lat,lng);
      console.info('Verarbeite Eintrag#'+i+ ' @'+latlng);
      if(!i)map.setCenter(latlng,5);
      
      var markerInfo=document.createElement('div');
      markerInfo.appendChild(document.createTextNode(data[i][1]));
      //Falls Koordinaten bereits vorhanden, Infos anhängen
      try
        {
          document.getElementById(nodeId).appendChild(markerInfo);
          console.info('Eintrag#'+i+':Marker vorhanden, erweitere InfoWin');
        }
      //Ansonsten neuen Knoten erzeugen
      catch(e)
        {
          var marker = new GMarker(latlng, {draggable: false,icon:icon});
          markerInfoWrapper  = document.createElement('div');
          markerInfoWrapper.appendChild(markerInfo);
          markerInfoWrapper.id=nodeId;
          document.getElementById('infoWins').appendChild(markerInfoWrapper);
          marker.bindInfoWindow(document.getElementById(nodeId));
          map.addOverlay(marker);
          console.info('Eintrag#'+i+':erstelle Marker und Infowin');
        }
      
      
      
    }
    console.info('Fertsch');   
    
    </script>
    
  </body>
 
Ach so hast du das gemeint ... hätte ich so nie hinbekommen. Danke ich werde das mal bei Gelegenheit testen.
 
Hi,
wie kann ich den die Geotags von Flickr auslesen? Per RSS kann ich ja nur die letzten 10 oder 20 anzeigen lassen. Ich würde aber gerne alle verfügbaren Bilder eines Users anzeigen lassen.
 

Neue Beiträge

Zurück