1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

JavaScript Problem

  • -sk-
  • 22. Dezember 2008 um 20:33
  • Unerledigt
  • -sk-
    3
    -sk-
    Mitglied
    Reaktionen
    1
    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
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    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

    lg, Benjamin Ferrari, bookworm.at

  • -sk-
    3
    -sk-
    Mitglied
    Reaktionen
    1
    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
    2
    Mythos
    Mitglied
    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-
    3
    -sk-
    Mitglied
    Reaktionen
    1
    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-
    3
    -sk-
    Mitglied
    Reaktionen
    1
    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung