tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von huzmaos
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1344
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    walle_89 walle_89 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    70
    Hallo!

    Ich habe Probleme mit der Google Maps API: im Array enthaltene Elemente werden nicht bzw. falsch angezeigt. Dazu mal der ganze Code.
    HTML-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
      <title>Google Maps JavaScript API Example</title>
      <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=ABQIAAAAu672sNJh4Drnghll6-dikBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxTheakK1XEJ1Dhj7tegg_KKN0DGpg" type="text/javascript"></script>
      <script type="text/javascript">
      //<![CDATA[
      function load()
      {
    	if (GBrowserIsCompatible())
    	{
    	  var map = new GMap2(
    	  document.getElementById("map"));
    	  map.addControl(new GSmallMapControl());
    	  map.setCenter(
    	  new GLatLng(52.052491, 9.84375), 4);
    	  var points = new Array();
    	  points[0] = new Array();
    	  points[0]["longitude"]	= "52.052491";
    	  points[0]["latitude"]		= "9.84375";
    	  points[0]["name"]			= "Test";
    	  points[0]["option"]		= "Wirtschaftsinformatik";
    	  points[1] = new Array();
    	  points[1]["longitude"]	= "50.052491";
    	  points[1]["latitude"]		= "7.84375";
    	  points[1]["name"]			= "Test2";
    	  points[1]["option"]		= "Musik";
    	  for(o=0;o<points.length;o++)
    	  {
    		var marker = createMarker(new GLatLng(points[o]["longitude"] + "," + points[o]["latitude"]), points[o]["name"], points[o]["option"]);
    		map.addOverlay(marker);
    	  }
    	}
      }
      function createMarker(point, text, title)
      {
    	var marker =
    	new GMarker(point,{title:title});
    	GEvent.addListener(
    	marker, "click", function()
    	{
    	  marker.openInfoWindowHtml(text);
    	});
    	return marker;
      }
      //]]>
      </script>
      </head>
      <body onload="load()" onunload="GUnload()">
        <div id="map" style="width:600px;height:600px"></div>
      </body>
    </html>
    Ich packe ja alle Details in das Array "points" und verarbeite es zu einzelnen "Markern" beim Durchlaufen einer Schleife ... Wo liegt also der Fehler? Oder sehe ich den Wald vor Lauter Bäumen nicht?

    Gruß, walle
     

  2. #2
    huzmaos huzmaos ist offline Grünschnabel
    Registriert seit
    Jan 2005
    Beiträge
    4
    Das funktioniert:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    var map;
                function load(){
                    if (GBrowserIsCompatible()){
                        map = new GMap2(document.getElementById("map"));
                        map.addControl(new GSmallMapControl());
                        map.setCenter(new GLatLng(52.052491, 9.84375), 4);
     
                        var points = new Array();
                        points[0] = new Array();
                        points[0]["latitude"]    = "52.052491";
                        points[0]["longitude"]        = "9.84375";
                        points[0]["name"]            = "Test";
                        points[0]["option"]        = "Wirtschaftsinformatik";
                        points[1] = new Array();
                        points[1]["latitude"]    = "50.052491";
                        points[1]["longitude"]        = "7.84375";
                        points[1]["name"]            = "Test2";
                        points[1]["option"]        = "Musik";
     
                        for(var o=0; o<points.length; o++){
                            var marker = addMarker(points[o]);
                            map.addOverlay(marker);
                        }
                    }
                }
     
                function addMarker(arr) {
                    var marker = new GMarker(new GLatLng(arr['latitude'], arr['longitude']),{title:arr['title']});
                    GEvent.addListener( marker, "click", function(){
                        marker.openInfoWindowHtml(arr['option']);
                    });
                    return marker;
                }
    Zuerst mal: mach die map global verfügbar, damit du auch von anderen Funktionen aus darauf zugreifen kannst ( var map; ganz oben, ausserhalb der load(), sonst ist sie nur dort verfügbar). Das mal als hinweis...

    Ich denke du hast latidude und longitude verwechselt, habs ausgetauscht..

    Dann übergib das ganze Array an die Funktion und erstelle den Marker und GLatLng in der funktion. das hat mit scopes und referenzen in javascript zu tun, die ich selbst nicht wirklich durchschaue. aber man kann sich daran gewöhnen...

    Warum erstellst du den marker in einer funktion, gibst ihn zurück und fügst ihn dann erst hinzu? so wärs effizienter:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
                function addMarker(arr) {
                    var marker = new GMarker(new GLatLng(arr['latitude'], arr['longitude']),{title:arr['title']});
                    GEvent.addListener( marker, "click", function(){
                        marker.openInfoWindowHtml(arr['option']);
                    });
                    map.addOverlay(marker);
                }
    Geändert von huzmaos (10.09.09 um 00:19 Uhr)
    walle_89 bedankt sich. 

  3. #3
    walle_89 walle_89 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    70
    Cool, danke dir!! Hat mir auf jeden Fall einiges klarer gemacht!
     

Ähnliche Themen

  1. Google Maps "ReverseGeocoding"-Bsp. auf mehrere Maps anwenden
    Von jbender im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 30.03.10, 21:06
  2. Google Maps api
    Von Aurora-One im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 01.02.10, 21:15
  3. Google Maps + Thickbox
    Von dwex im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 04.07.09, 16:50
  4. Google Maps
    Von weissi im Forum PHP
    Antworten: 12
    Letzter Beitrag: 03.02.09, 08:07
  5. Wanderkarte a la Google Maps
    Von Ossi im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 08.03.07, 01:33