1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

JavaScript Problem

  • -sk-
  • 22. Dezember 2008 um 20:33
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • -sk-
    Punkte
    61
    Beiträge
    10
    • 22. Dezember 2008 um 20:33
    • #1

    Spiel mich grad mit der Google Maps API herum und komm bei folgendem (JavaScript)Problem nicht weiter:

    Ich will eine Markierung für einen bestimmten Ort setzten. Wenn ich dies wie im unten gequoteten Codestück mache funktioniert dies auch problemlos. Allerdings möchte ich in einem weiteren Schritt Markierungen an mehreren Orten einfügen und dazu ist es notwendig, dass ich die Funktion "showAddress()" im Body aufrufe. Nur wie mache ich das?

    Sollte das nicht eigentlich mit

    HTML
    <script type="text/javascript">
    showAddress("OrtXY")
    </script>

    funktionieren? Geht allerdings nicht, da dann sowohl map als auch geocoder null ist.

    HTML
    <html>
    <head>
    <title>google maps api test</title>
    
    
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=xxx"
          type="text/javascript"></script>
    <script type="text/javascript">
    
    
        //<![CDATA[
    
    
        var map;
        var geocoder;
    
        function load() {
          if (GBrowserIsCompatible()) {
    
            map = new GMap2(document.getElementById('map'));
            geocoder = new GClientGeocoder();
            setCenter('1010 Wien');
            map.addControl(new GMapTypeControl());
            map.addControl(new GLargeMapControl());    
            this.showAddress('1100 Wien');
          }
        }
    
        function setCenter(address) {
            geocoder.getLatLng(address, 
                function(point) {
                    map.setCenter(point, 4);
                }
            );    
        }
    
        function showAddress(address) {
            geocoder.getLatLng(address, 
                function(point) {
                    var marker = new GMarker(point);
                    map.addOverlay(marker);
    
                }
            );    
        }
    
    
    
    
    
        //]]>
    </script>
    
    
    </head>
    
    
    <body onload="load()" onunload="GUnload()">
    
    
    blabla
    
    
    </body>
    
    
    </html>
    Alles anzeigen
  • a9bejo
    Punkte
    4.697
    Beiträge
    913
    • 23. Dezember 2008 um 00:21
    • #2

    ich glaube das body onload='...' wird erst aufgerufen, _nachdem_ das Dokument fertig geladen wurde. D.h. zu dem Zeitpunkt, an dem das Script im body ausgefuehrt wird, wurde die load() Methode noch gar nicht aufgerufen, und deine objekte noch nicht initialisiert.

    Wenn du load stattdessen z.b. im body als Script aufrufst, sollte es funktionieren:

    Code
    <body>
      <script type="text/javascript">
        load();
      </script>
    
    
      ...
    
    
      <script type="text/javascript">
        showAddress("OrtXY")
      </script>
    </body>
    Alles anzeigen
  • -sk-
    Punkte
    61
    Beiträge
    10
    • 23. Dezember 2008 um 12:18
    • #3
    Zitat von a9bejo

    ich glaube das body onload='...' wird erst aufgerufen, _nachdem_ das Dokument fertig geladen wurde. D.h. zu dem Zeitpunkt, an dem das Script im body ausgefuehrt wird, wurde die load() Methode noch gar nicht aufgerufen, und deine objekte noch nicht initialisiert.

    Wenn du load stattdessen z.b. im body als Script aufrufst, sollte es funktionieren:

    Code
    <body>
      <script type="text/javascript">
        load();
      </script>
    
    
      ...
    
    
      <script type="text/javascript">
        showAddress("OrtXY")
      </script>
    </body>
    Alles anzeigen

    Hab ich auch schon probiert, aber wenn ich load() im body aufrufe tut sich gar nichts mehr, es wird nicht einmal die Karte geladen.

  • Mythos
    Punkte
    40
    Beiträge
    7
    • 23. Dezember 2008 um 12:52
    • #4

    link z.B.:

    Code
    <a href="#" onclick='showAddress("1120 Wien")'>asdf</a>


    vielleicht gehts

  • -sk-
    Punkte
    61
    Beiträge
    10
    • 23. Dezember 2008 um 12:58
    • #5

    So funktioniert es schon, nur ich lese aus einer DB eine Menge Orte aus und für diese sollen Markierungen gesetzt werden. Und diese sollten ohne Mithilfe des Users geladen werden.

  • -sk-
    Punkte
    61
    Beiträge
    10
    • 23. Dezember 2008 um 13:29
    • #6

    Problem dürft sein, dass das Laden der Map länger dauert als der Aufbau der restlichen Elemente. Habs jetzt gelöst mit einem timeout:

    HTML
    <script type="text/javascript">
    <!--
    setTimeout("showAddress('XY')",500);
    // -->
    </script>
  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum