Javascript modifizieren

semeniak

Grünschnabel
Hallo

Habe ein MCMS template erstellt, welches Angaben über die Location via google map enthält. Es sind 5 Locations und ich habe diese in 1 template hinein genommen. Man müsste dann nur noch das jeweilige <div id"jeweilige Location"></div> erstellen und schon wird die location via google map dargestellt. Das ganze funktioniert auch bei der ersten location. alle nachfolgenden funktionieren jedoch nicht. Und wenn ich alle location auf eine page nehmen funktioniert es aber auch. Ich denke es liegt daran, dass die ausführung des codes fehlschlägt, wenn eine Location nicht auf der Page ist. Kann mir jemand helfen beim Code modifizieren, so dass eine kurze Abfrage gemacht wird, ob Location auf der page. (Programmiere C# mit asp.net.. javascript bin ich noch nicht so bewandert)

Code:
<script type="text/javascript">

    //<![CDATA[
	function createMarker(point,html) {
    var marker = new GMarker(point);
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(html);
        });
        return marker;
    }

    function load() {
      if (GBrowserIsCompatible()) {
        //Elotex
		var mapElotex = new GMap2(document.getElementById("mapElotex"));
        mapElotex.setCenter(new GLatLng(47.116140, 8.198790), 15);
        mapElotex.addControl(new GSmallMapControl());
        mapElotex.addControl(new GMapTypeControl());
		var pointElotex = new GLatLng(47.116088, 8.205961);
		var markerElotex = createMarker(pointElotex,'<div style="width:150px">Adresse</div>')
		mapElotex.addOverlay(markerElotex);
	   
	    //Claviag
	   	var mapClaviag = new GMap2(document.getElementById("mapClaviag"));
        mapClaviag.setCenter(new GLatLng(47.269134, 8.062341), 15);
        mapClaviag.addControl(new GSmallMapControl());
        mapClaviag.addControl(new GMapTypeControl());
		var pointClaviag = new GLatLng(47.269066, 8.056606);
		var markerClaviag = createMarker(pointClaviag,'<div style="width:150px">Adresse</div>')
		mapClaviag.addOverlay(markerClaviag);
		
		//Garland
	   	var mapGarland = new GMap2(document.getElementById("mapGarland"));
        mapGarland.setCenter(new GLatLng(32.887687, -96.673087), 14);
        mapGarland.addControl(new GSmallMapControl());
        mapGarland.addControl(new GMapTypeControl());
		var pointGarland = new GLatLng(32.887687, -96.673087);
		var markerGarland = createMarker(pointGarland,'<div style="width:240px">Adresse</div>')
		mapGarland.addOverlay(markerGarland);
		
		//Geleen
	   	var mapGeleen = new GMap2(document.getElementById("mapGeleen"));
        mapGeleen.setCenter(new GLatLng(50.953480, 5.797241), 14);
        mapGeleen.addControl(new GSmallMapControl());
        mapGeleen.addControl(new GMapTypeControl());
		var pointGeleen = new GLatLng(50.953480, 5.797241);
		var markerGeleen = createMarker(pointGeleen,'<div style="width:250px">Adresse</div>')
		mapGeleen.addOverlay(markerGeleen);
		
			//Geleen
	   	var mapFrankfurt = new GMap2(document.getElementById("mapFrankfurt"));
        mapFrankfurt.setCenter(new GLatLng(50.088547,8.522877), 15);
        mapFrankfurt.addControl(new GSmallMapControl());
        mapFrankfurt.addControl(new GMapTypeControl());
		var pointFrankfurt = new GLatLng(50.088547,8.522877);
		var markerFrankfurt = createMarker(pointFrankfurt,'<div style="width:270px">Adresse</div>')
		mapFrankfurt.addOverlay(markerFrankfurt);
		
      }
    }

    //]]>
    </script>

weitere unten im body dann das div tag
Code:
<div id="mapElotex" style="WIDTH: 500px; HEIGHT: 300px"></div>


Freundliche Grüsse
Semeniak
 
Moin,

dafür kannst du ein try-catch Statement nutzen.

Der logisch Aufbau:
Code:
try{
    //versuche dies
   }
catch(e)
   {
    //mache etwas anderes
   }

Bei dir müsstest du dann im Detail den Code für jede einzelne Map nach diesem Schema kapseln:
Code:
//Garland
try{
    var mapGarland = new GMap2(document.getElementById("mapGarland"));
    mapGarland.setCenter(new GLatLng(32.887687, -96.673087), 14);
    mapGarland.addControl(new GSmallMapControl());
    mapGarland.addControl(new GMapTypeControl());
    var pointGarland = new GLatLng(32.887687, -96.673087);
    var markerGarland = createMarker(pointGarland,'<div style="width:240px">Adresse</div>')
    mapGarland.addOverlay(markerGarland);
    }catch(e){}

Das ist schon alles.
Wird jetzt versucht, auf eine nicht existierende Map zuzugreifen, erzeugt das keinen Fehler mehr und die Funktion kann weiterarbeiten :)
 
Super, freut mich :)

Kleine Anmerkung zu der Seite :-(
Du solltest noch etwas am CSS für die Navigation schrauben, wenn man JS aus hat, liest sich rot auf rot recht schwierig :)
 
Zurück