Google Maps API

walle_89

Mitglied
Hallo!

Ich habe Probleme mit der Google Maps API: im Array enthaltene Elemente werden nicht bzw. falsch angezeigt. Dazu mal der ganze Code.
HTML:
<!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
 
Das funktioniert:
Code:
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:
            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);
            }
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück