ERLEDIGT
JA
ANTWORTEN
14
ZUGRIFFE
2172
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Avatar von sid61
    sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    Hallo,

    ich beschäftige mich derzeit mit einem etwas kniffligen Problem.
    Ich möchte in einer Google Map Karte eine Möglichkeit unterbringen, die es mir erlaubt -

    • Wenn ich einen Marker anklicke


    eine Anfrage zu senden in dieser Form..

    Code :
    1
    2
    3
    4
    5
    6
    
    GEvent.addListener(map, 'click', function(overlay, latlng) {
              var selectedWebService = document.getElementById('webserviceSelect').value;
              var script = document.createElement('script');
              document.body.appendChild(script);
              script.src = 'http://ws.geonames.org/' + selectedWebService + 'JSON?lang=de&lat=' + latlng.lat() + '&lng=' + latlng.lng() + '&callback=loadJSON';
              document.getElementById('result').innerHTML = 'Sende Anfrage an ' + script.src;

    Diese Routine ist so aufgebaut, das ich die Daten in diesem Format erhalte :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    {"geonames":[{"summary":"Kirche im am Nordrand des Spreewalds gelegenen
     Dorf Straupitz. Sie wurde nach Plänen des bekannten Architekten Karl
     Friedrich Schinkel erbaut und stellt mit ihrer vollständig erhaltenen
     ursprünglichen Innenausstattung ein Baudenkmal von überregionaler Bedeutung dar. (...)",
     "distance":3.4693748222439,
     "title":"Dorfkirche Straupitz",
     "wikipediaUrl":"de.wikipedia.org/wiki/Dorfkirche_Straupitz",
     "elevation":0,
     "countryCode":
     "DE",
     "lng":14.12055,
     "feature":"landmark",
     "thumbnailImg":"http://www.geonames.org/img/wikipedia/143000/thumb-142193-100.jpg",
     "lang":"de",
     "lat":51.91105,
     "population":0}]}

    Nun habe ich aber das Problem, das ich ja bereits für die normalen Marker eine
    GEvent.addListener(map, 'click', function benutze, um ein ganz normales Bubble Window anzuzeigen.

    Gleichzeitig möchte ich aber erreichen, das ich mit Klick auf diesen Marker die Routine zur Beschaffung der Daten starte und das Ergebnis dann hier ausgebe..

    Also quasi - Marker werden angezeigt für die Objekte, die ich in der DB habe. Wenn ich auf einen Marker klicke, dann wird nicht nur das Bubble Fenster vom Marker angezeigt, sondern im Hintergrund auch die Daten geladen und nach Empfang dargestellt.

    Code :
    1
    
     <div id="result" style="width:500px; background-color: #eee; overflow: scroll; font-family: Courier">Results of last operation will be shown here.</div>

    Quasi, wenn ich den Marker anklicke, dann soll er mir die empfangenen Daten ausgeben.

    Geht das ?
    Wo positioniere ich hierbei den GEvent.addListener - kann ich mehrere davon benutzen oder muss ich anders an dieses Problem heran gehen ?

    Würde mich freuen, wenn mir jemand dazu was sagen kann..

    Liebe Grüße
    Sid
    Geändert von sid61 (14.07.08 um 22:23 Uhr) Grund: Fehler im Satz
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.112
    Moin,

    du kannst GEvent.addListener mehrmals notieren, alle werden berücksichtigt
     

  3. #3
    Avatar von sid61
    sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    Hallo Sven,

    jo - habe mal das eine oder andere getestet und es scheint wirklich zu funktionieren. Ich habe dafür - (das scheint immer so zu sein) ein neues Problem festgestellt.

    Hatte in etlichen Seiten gegoogelt, aber nichts gefunden, was einen wirklich zufrieden stellt.
    Mit dem JSON Dienst von geonames.org kann man echt viel anfangen, aber....

    Wie decodiere ich den String :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    {"weatherObservation":{"clouds":"n/a",
    "weatherCondition":"n/a",
    "observation":"EDDB 151820Z 26005KT CAVOK 21/14 Q1021 NOSIG",
    "windDirection":260,
    "ICAO":"EDDB",
    "elevation":48,
    "countryCode":"DE",
    "lng":13.5166666666667,
    "temperature":"21",
    "dewPoint":"14",
    "windSpeed":"05",
    "humidity":64,
    "stationName":"Berlin-Schoenefeld",
    "datetime":"2008-07-15 18:20:00",
    "lat":52.3666666666667,
    "hectoPascAltimeter":1021}}

    so, das ich mir die Werte aussuchen kann, die ich benötige. Also sinngemäß dann so, das ich die Begriffe gegen Deutsche austauschen kann und nur die nehme, die ich brauche (Beispiel: Grad Celsius : 23)

    Bei meiner Datenbankabfrage hatte ich das so gelöst :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    json = array();
    while(list($key,$values) = each($list)) {
        $i++;
           if ($values[2]<>'c') {
        $json[] = htmlspecialchars("p{$i}:{lat:{$values[0]},lng:{$values[1]},type:'{$values[2]}',id:'{$values[3]}',address:'{$values[4]}',
    state:'{$values[5]}',postcode:'{$values[6]}',price:'{$values[7]}',name:'{$values[8]}',
    art:'{$values[9]}',category:'{$values[10]}',agent:'{$values[11]}',agentphone:'{$values[12]}'
    ,thumb:'{$values[13]}'}");

    Aber von Geonames.org bekomme ich ja schon den kompletten Inhalt geliefert. Kann Ihn also so nicht zuordnen, wie hier gezeigt.

    Wie kann ich den String, der geliefert wird nun wieder zerhacken und mir die Teile herausholen, die ich benötige ? Generell ist es eben die Frage, denn auch bei Wikipedia JSON Ausgabe ist der Inhalt schon vollständig.

    Wenn ich also dem Beispiel :
    var map;
    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
    
        function load() {
          if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map"), {draggableCursor: 'crosshair'});
            map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.addControl(new GLargeMapControl());
        GEvent.addListener(map, 'click', function(overlay, latlng) {
              var selectedWebService = document.getElementById('webserviceSelect').value;
              var script = document.createElement('script');
              document.body.appendChild(script);
              script.src = 'http://ws.geonames.org/findNearByWeatherJSON?lang=de&lat=' + latlng.lat() + '&lng=' + latlng.lng() + '&callback=loadJSON';
              document.getElementById('result').innerHTML = 'Sende Anfrage an ' + script.src;
            });
          }
        }
      function replacer(key, value) {
        if (typeof value === 'number' && !isFinite(value)) {
            return String(value);
        }
        return value;
    }
        function loadJSON(result) {
        
          document.getElementById('result').innerHTML = JSON.stringify(result);
        
        }
    folgen würde, dann kann ich nur alles ausgeben und es ist nicht formatiert.

    Uff... Hoffe, das ich mich soweit verständlich ausgegöbelt habe

    Liebe Grüße
    Der andere Sven aus Heidesee

    P.S.
    Dennoch schon mal vielen Dank für deine vorherige Antwort, hat mir schon sehr geholfen !
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.112
    Zitat Zitat von sid61 Beitrag anzeigen
    Wie decodiere ich den String
    Da gibt es nichts zu dekodieren, er ist ja nicht kodiert

    Dieser String ist eine Repräsentation eines Objektes, du kannst daraus per eval() das Objekt wiederherstellen, und dann wie üblich auf seine Eigenschaften zugreifen:
    Code :
    1
    2
    3
    4
    5
    
    str='{"weatherObservation":{"clouds":"n/a","weatherCondition":"n/a","observation":"EDDB 151820Z 26005KT CAVOK 21/14 Q1021 NOSIG","windDirection":260,"ICAO":"EDDB","elevation":48,"countryCode":"DE","lng":13.5166666666667,"temperature":"21","dewPoint":"14","windSpeed":"05","humidity":64,"stationName":"Berlin-Schoenefeld","datetime":"2008-07-15 18:20:00","lat":52.3666666666667,"hectoPascAltimeter":1021}}';
     
    eval('objekt='+str);
     
    alert(objekt.weatherObservation.temperature);
     

  5. #5
    Avatar von sid61
    sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    Hallo Sven,

    o.K. - ich glaube, das habe ich begriffen. Ich habe mal einen Teststring gebastelt, der auch soweit funktioniert und in etwa so aussieht..

    Code :
    1
    2
    3
    4
    
    eval('objekt='+result);
    test=('Wolkenbildung: ' +  objekt.weatherObservation.clouds + ' · Temperatur: ' + 
    objekt.weatherObservation.temperature + ' Grad Celsius\nWindgeschwindigkeit: ' + 
    objekt.weatherObservation.windSpeed + ' Knoten');</div>

    Was ich aber immer noch nicht verstehe ist, wie bekomme ich das runde Schwein durch das eckige Schlüsselloch ?

    Beispiel :

    JSON kommt so an -

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    {"weatherObservation":{"clouds":"n/a",
    "weatherCondition":"n/a",
    "observation":"EDDB 151820Z 26005KT CAVOK 21/14 Q1021 NOSIG",
    "windDirection":260,
    "ICAO":"EDDB",
    "elevation":48,
    "countryCode":"DE",
    "lng":13.5166666666667,
    "temperature":"21",
    "dewPoint":"14",
    "windSpeed":"05",
    "humidity":64,
    "stationName":"Berlin-Schoenefeld",
    "datetime":"2008-07-15 18:20:00",
    "lat":52.3666666666667,
    "hectoPascAltimeter":1021}}

    wobei es ja auch mal mehr Daten sein könnten (Beispiel - Wikipedia, bis zu 10 solcher Datensätze) hier beim Wetter erst mal nur einer pro Klick.

    Wie muss ich es denn nun anstellen, das ich diese Ausgabe an meine neue Routine übergebe ?

    Also JSON kommt an -> geht durch mein Kauderwelch -> wird nun so zurückgeschrieben, das ich vor Freude Luftsprünge machen kann

    Entschuldige, wenn ich mich dumm ausdrücke - habe wirklich nicht sehr viel Ahnung von Javascript. Aber muss ich dann die ankommenden Datensätze JSON dann nicht in ein array innerhalb einer Schleife schreiben, bis alles durch ist und dann irgendwie auf der anderen Seite alles noch mal umwandeln in meine Wünsche und das muss ja dann wiederum nochmals bis zum Abruf wieder irgendwo reingeschrieben werden ?

    War das ungefair so richtig ?

    Gruss
    Der andere Sven..
    Geändert von sid61 (16.07.08 um 00:10 Uhr) Grund: Kleiner Fehler im Umbruch langer Zeilen..
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.112
    Das Dumme ist, dass die Daten nicht einheitlich ankommen...beim Wetter kommt ein Objekt an, bei Wiki als Array....da müsstest du in deiner Routine etwas vorschalten, was beides auf einen gemeinsamen Nenner bringt(Array oder Objekt)
     

  7. #7
    Avatar von sid61
    sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    Zitat Zitat von Sven Mintel Beitrag anzeigen
    Das Dumme ist, dass die Daten nicht einheitlich ankommen...beim Wetter kommt ein Objekt an, bei Wiki als Array....da müsstest du in deiner Routine etwas vorschalten, was beides auf einen gemeinsamen Nenner bringt(Array oder Objekt)
    Hallo Sven,

    gibt es denn dafür ein verständliches Beispiel ?

    oder etwas, was mir das ganze veranschaulichen kann ?

    Liebe Grüße
    Sven
     

  8. #8
    Avatar von Sven Mintel
    Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.112
    Moin...

    Mir ist noch nicht so ganz klar, welche Gemeinsamkeit für dich die beiden Objekte haben,...wozu die gemeinsame Routine?

    lg von Sven aus Beeeeerlin
     

  9. #9
    Avatar von sid61
    sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    Hallo Sven,

    ich habe gestern nochmal einiges gelesen, was ich mal ausprobieren möchte. Ich will mal ein paar Schritte machen und poste dann nochmal den Code , der es dir vielleicht besser ermöglicht, meinen wirren Gedanken zu folgen

    Ich poste dann noch mal meine Versuche...

    Bei der gemeinsamen Routine waren meine Gedanken, das man die Daten der derzeit sichtbaren Marker abfragt und wie für die Routine der Marker bereit stellt, so das man diese dann nach seinen Wünschen entweder im Marker Info Window (tab) ablegt oder in die Sidebar schreibt. Dabei orientiere ich mich immer auf den Seiten, wo diese Beispiele vorhanden sind.

    In meinem Fall aus dem Buch von UWMike (Google Maps & PHP) und Mike (Google Group) - (The Guy what play the Guitar). Leider stehen mir dabei immer wieder meine Unkenntnis im Wege, so das es für einen Profi wie dich sicher komisch aussieht

    Gruss
    Sven
     

  10. #10
    Avatar von Sven Mintel
    Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.112
    Mmmh, ich weiss jetzt nicht, ob es das ist, worauf du hinauswillst, aber hier habsch mal was
    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
    34
    35
    36
    37
    
    <body>
    <script type="text/javascript">
    <!--
    a='{"weatherObservation":{"clouds":"n/a","windSpeed":"0.5"}}';
    b='{"temperature":"21","countryCode":"DE"}';
    c='{"geonames":[{"summary":"Zusammenfassung(...)","title":"Dorfkirche Straupitz"}]}';
    d='{"test":{"ichBleibeWieIchBin":"Jawoll","meNot":"ich aber nicht"}}';
    e='{"foo":"bar"}';
     
    function jimBob(j,m,s)
    {
      r='';
      eval('this.obj='+j+((m!=null)?'.'+m:''));
      for(i=3;i<jimBob.arguments.length;++i)
        {
          r+='<li>'
          if(typeof jimBob.arguments[i]=='string')
            {
              r+=jimBob.arguments[i]+s+this.obj[jimBob.arguments[i]];
            }
          else
            {
              r+=jimBob.arguments[i][1]+s+this.obj[jimBob.arguments[i][0]]
            }
        }
      return((r=='')?'nix':'<ul>'+r+'</ul>')
    }
     
     
    document.write(jimBob(a,'weatherObservation','=&gt;',['clouds','Wolken'],['windSpeed','Windgeschwindigkeit'])+'<hr>');
    document.write(jimBob(b,null,':',['temperature','Temperatur'],'countryCode')+'<hr>');
    document.write(jimBob(c,'geonames[0]','=&gt;',['summary','Zusammenfassung'],['title','Titel'])+'<hr>');
    document.write(jimBob(d,'test','-','ichBleibeWieIchBin',['meNot','Ich nicht'])+'<hr>');
    document.write(jimBob(e,null));
     
    //-->
    </script>

    a-e sind mal testhalber JSON-Notationen, jimBob() wird sie verarbeiten(habs mal so genannt, weil es ja nichts mit J(a)son zu tun hat,da ja eval() benutzt wird...aber darum gehts ja auch nicht )

    Die Argumente für jimBob:
    1. der String mit der JSON-Notation

    2. Das Zielobjekt in diesem String, aus dem die Eigenschaften geholt werden sollen, wenn der komplette String genommen werden soll, muss dort null hin

    3. ein String, der Zwischen Name und Wert stehen soll

    4. Danach beliebig viele Argumente, jenachdem was ausgegeben werden soll.
      Wenn der Attributname unverändert ausgegeben werden soll, wird er als String notiert, andernfalls ein Array:
      • 1. Array-Element->der originale Attributname
      • 2. Array-Element-> Das, was stattdessen angezeigt werden soll


    Ist sicher noch ausbaufähig, aber als Ansatz sollte es schon mal nutzbar sein.
     

  11. #11
    Avatar von sid61
    sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    Hallo Sven,

    zuerst einmal danke !!
    ich werde mal versuchen, ob ich damit klar komme.

    Ich hatte heute mal an der Wetter Geschichte gesessen. Da es den Wetterbericht ja auch als XML gibt, habe ich mal probiert, ob ich eine Function bauen kann, mit der ich die Daten auslese und dann an geeigneter Stelle verwenden kann.


    Ich habe das so konstruiert, das ich die Function mit

    getwetter(lat,lng); aufrufe.

    ich würde die Function gern an dieser Stelle einbinden (vor sidebar_html), da hier die Schleife für jedes Sidebarfeld durchlaufen wird. -

    Code :
    1
    2
    
     sidebar_html += '<div id="' + linkid + '" style="margin-left: 4px; margin-top: 4px;"><a href="javascript:myclick(\'' + i + '\')"><img src="http://client.wohnraum24.eu/components/com_wohnraum24/img/thb/'+ thumb +'"  alt="Ansicht Foto" border="0"/><br><h2>' + name + '</h2></a><ul><li>'+ category +'</li><li>L&auml;ngengrad: '+ lat +'</li><li>Breitengrad: '+ lng +'</li></ul></div>'; 
            }

    Gesagt, getan, aber irgendwas mache ich immer noch falsch. Ich bekomme einfach keine Daten, obwohl der reine Aufruf der URL keine Probleme macht und mir die xml Datei sendet (mit den gewünschten Koodinaten) nur wenn ich es mit der function aufrufe, dann bleibt die Karte leer und nichts wird mehr angezeigt.

    Mein Gedanke war gewesen, das ich nach dem Aufruf der Function die variablen in den sidebar_html Code einfüge, also z.B. <li>Temperatur: '+ grad +'</li><li>Wolkenbildung: '+ clouds +'</li> u.s.w.

    Hier ist der Code, mit dem ich mir den Inhalt der URL (Wetterdaten) hole..
    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
    34
    35
    36
    37
    38
    39
    40
    
    function getwetter(lat,lng)
    {
        var request = GXmlHttp.create();
        
           
        //Diese Zeile muss ergänzt werden, wenn eine Suchoption dazu eingefügt wird (oder eben reduzieren)!!
           var url = 'http://ws.geonames.org/findNearByWeatherXML?lat='+lat+'&lng='+lng';
           
        request.open("GET", url, true);
        request.onreadystatechange = function()
        {
            if (request.readyState == 4)
            {
                try
                   {
                var xmlResults = request.responseXML.documentElement;
            
                                
                    
            var observation = xmlResults.getElementsByTagName('observation').item(i).firstChild.data;
                var obtime = xmlResults.getElementsByTagName('observationTime').item(i).firstChild.data;
            var station = xmlResults.getElementsByTagName('stationName').item(i).firstChild.data;
            var icao = xmlResults.getElementsByTagName('ICAO').item(i).firstChild.data;
            var landcode = xmlResults.getElementsByTagName('countryCode').item(i).firstChild.data;
            var hoehe = xmlResults.getElementsByTagName('elevation').item(i).firstChild.data;
            var laenge = xmlResults.getElementsByTagName('lat').item(i).firstChild.data;
            var breite = xmlResults.getElementsByTagName('lng').item(i).firstChild.data;
                var grad = xmlResults.getElementsByTagName('temperature').item(i).firstChild.data;
                var messpunkt = xmlResults.getElementsByTagName('dewPoint').item(i).firstChild.data;
                var gefuehl = xmlResults.getElementsByTagName('humidity').item(i).firstChild.data;
            var wolken = xmlResults.getElementsByTagName('clouds').item(i).firstChild.data;
            var condition = xmlResults.getElementsByTagName('weatherCondition').item(i).firstChild.data;
                var hektopascal = xmlResults.getElementsByTagName('hectoPascAltimeter').item(i).firstChild.data;
                var windrichtung = xmlResults.getElementsByTagName('windDirection').item(i).firstChild.data;
                var windspeed = xmlResults.getElementsByTagName('windSpeed').item(i).firstChild.data;
                    }
            }
        }
        request.send(null);
    }

    Aber wie gesagt, es will einfach nicht funktionieren. Was mache ich falsch

    Liebe Grüße
    Sven
     

  12. #12
    Avatar von Sven Mintel
    Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.112
    Moin,

    Per AJAX(welches du da zum Einsatz kommt) kannst du derzeits nur Quellen der eigenen Domain abfragen
     

  13. #13
    Avatar von sid61
    sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    Hallo Sven,

    uff, das war jetzt frustrierend...

    damit habe ich gestern den ganzen Tag verbracht. Hmm, ich dünne jetzt nochmal aus und bleibe nochmal beim Wetter. Ich habe mir eine neue Konstruktion zusammen gebaut, leider mache ich wieder etwas nicht richtig. Ich bekomme einfach den Zusammenhang zwischen ankommen und zuordnen nicht hin.

    Hier noch mal ein Ansatz..

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    
    <!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" xmlns:v="urn:schemas-microsoft-com:vml">
      <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF=8"/>
        <title>Google Maps JavaScript API Example - Geonames WebServices</title>
     
        <script src="http://www.json.org/json2.js" type="text/javascript"></script>
     
        <script type="text/javascript">
        //<![CDATA[
        function ladewetter() {
     
              var selectedWebService = "findNearByWeather"
              var script = document.createElement('script');
              document.body.appendChild(script);
     
    // Für Test mal feste Werte eingegeben, wird später durch +lat+ / +lng+ ersetzt.
              script.src = 'http://ws.geonames.org/findNearByWeatherJSON?lang=de&lat=52.3666666666667&lng=13.5166666666667&callback=loadJSON';
              //document.getElementById('result').innerHTML = script.src;
                         }
     
           function loadJSON(result) {
     
           // wenn ich nachfolgende Zeile aktiviere, kommt JSON richtig an
           // wenn ich hier versuche, vor der Ausgabe umzuwandeln, dann stelle ich mich
           // zu blöd an und verstehe es immer noch nicht.
           // Werde nach einem Gebrauchthirn mit Einstein IQ Ausschau halten müssen..
           //document.getElementById('ausgabe').innerHTML = JSON.stringify(result);
           eval('objekt='+result);
           test=('Wetterstation ' +  objekt.weatherObservation.stationName + ' meldet am ' + objekt.weatherObservation.datetime + ' Uhr\nWolkenbildung: ' +  objekt.weatherObservation.clouds + ' · Temperatur: ' + objekt.weatherObservation.temperature + ' Grad Celsius\nWindgeschwindigkeit: ' + objekt.weatherObservation.windSpeed + ' Knoten');
     
           // Und hier dachte ich - nu isses gewandelt - geh und zeig an 
           // Aber so wie es aussieht - ist Newton gegen mich ein Waisenknabe ;-)
           //document.getElementById('ausgabe').innerHTML = JSON.stringify(test);
           // Und da verließen Sie Ihn und machte sich auf, um erneut im Forum zu jammern..
     
                                   }
        //]]>
        </script>
      </head>
    <body onload="ladewetter()">  
    <br><center>
        <div id="ausgabe" style="width:500px; background-color: #cccc00; overflow: scroll; font-family: Courier">
    </center>
      </body>
    </html>
     

  14. #14
    Avatar von Sven Mintel
    Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.112
    Zitat Zitat von sid61 Beitrag anzeigen

    uff, das war jetzt frustrierend...
    Naja, es gibt Schlimmeres, womit man den Sonntag verbringen kann

    Die Lösung ist recht simpel, geonames.org erzeugt bereits ein Objekt, du musst dies also nicht per eval tun:
    Code :
    1
    2
    3
    4
    5
    
    function loadJSON(result) {
          objekt=result;
          test=('Wetterstation ' +  objekt.weatherObservation.stationName + ' meldet am ' + objekt.weatherObservation.datetime + ' Uhr\nWolkenbildung: ' +  objekt.weatherObservation.clouds + ' · Temperatur: ' + objekt.weatherObservation.temperature + ' Grad Celsius\nWindgeschwindigkeit: ' + objekt.weatherObservation.windSpeed + ' Knoten');
          document.getElementById('ausgabe').innerHTML = test;
          }
     

  15. #15
    Avatar von sid61
    sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    Jo,
    das wars - jetzt bekomme ich die Daten so, wie ich es mir gedacht hatte. Kleiner Makel ist noch in der Ausgabe - am Anfang und Ende der Ausgabe werden noch Anführungszeichen ausgegeben. Aber im wesentlichen ist das Problem damit erfolgreich gelöst.

    Ich möchte mich nochmal bei dir bedanken, Sven..

    Liebe Grüße
    der andere Sven
     

Ähnliche Themen

  1. json for..in
    Von ano1486 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 28.08.10, 16:28
  2. JSON Parser
    Von serializable im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 16.07.08, 01:02
  3. Datensätze aus DB in 4 Spalten darstellen
    Von chäschpe im Forum PHP
    Antworten: 6
    Letzter Beitrag: 14.04.07, 00:24
  4. Grosse Anzahl an Datensätze in einem ListCtrl darstellen
    Von bukem im Forum VisualStudio & MFC
    Antworten: 5
    Letzter Beitrag: 14.06.05, 16:36
  5. Antworten: 3
    Letzter Beitrag: 31.08.02, 20:43