AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Google Maps über COM (Component Object Model)
Thema durchsuchen
Ansicht
Themen-Optionen

Google Maps über COM (Component Object Model)

Ein Thema von Thom · begonnen am 23. Dez 2010 · letzter Beitrag vom 22. Mai 2022
Antwort Antwort
Benutzerbild von duff
duff

Registriert seit: 26. Jan 2005
Ort: Brühl
76 Beiträge
 
Delphi 2007 Professional
 
#1

AW: Google Maps über COM (Component Object Model)

  Alt 19. Aug 2011, 09:01
Jetzt wird es noch interessanter ;D

Wettermeldungen bei Google Maps
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#2

AW: Google Maps über COM (Component Object Model)

  Alt 23. Aug 2011, 12:02
Hallo duff,

vielen Dank für Deinen Hinweis!

Google's Wettervorhersage scheint - genau wie die Stauanzeige - nicht über das dokumentierte API zu laufen.
Trotzdem bekommt man das auch mit dem Framework hin. Bindet man die Wettersymbole als zusätzlichen Layer ein, stört allerdings die Beschriftung der eigentlichen Karte ganz enorm, da damit die Darstellung schnell unübersichtlich wird:
screenshot_1.jpg

Werden spezielle Karten verwendet, bei denen die Beschriftung reduziert ist, wird sogar die Wolkenverteilung sichtbar:
screenshot_2.jpg

Im Anhang befindet sich eine kompilierte Demo, die die Wetterkarte etwa so zeigt, wie auf der Maps-Seite von Google.
Angehängte Dateien
Dateityp: zip GoogleWeatherLayer.zip (850,1 KB, 131x aufgerufen)
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (24. Aug 2011 um 12:18 Uhr) Grund: Demo hinzugefügt
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#3

Darstellung von Wetterdaten

  Alt 24. Aug 2011, 14:41
In diesem Beitrag möchte ich eine Demo vorstellen, die es ermöglicht, Wetterinformationen, die über das - nicht dokumentierte - Google Weather API abgerufen werden können, mit Hilfe des Frameworks darzustellen.
screenshot_1.jpg

Diese Demo ist allerdings - im Gegensatz zu allen bisherigen - nur mit unicode-fähigen Delphi-Versionen (also ab 2009) kompilierbar. Besitzer älterer IDE's müßten die Anpassungen selbst vornehmen. Das hat nichts mit dem Framework zu tun, sondern mit den zu verarbeitenden Wetterdaten.

Google Weather API ist eigentlich eine vollkommen übertriebene Bezeichnung: Es handelt sich lediglich um eine URL, über die mit Hilfe zweier Parameter eine XML Datei abgerufen werden kann:
Code:
http://www.google.com/ig/api?weather=[LOCATION]&hl=[LANGUAGE]
  • [LOCATION] ist dabei im einfachsten Fall der Ort, für den die Wetterinformationen abgerufen und
  • [LANGUAGE] die Sprache (Länderkürzel), in der diese Informationen geliefert werden sollen.

Code:
http://www.google.com/ig/api?weather=Berlin&hl=de
liefert eine XML-Datei mit folgender Struktur:
Code:
<?xml version="1.0"?>
<xml_api_reply version="1">
  <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
    <forecast_information>
      <city data="Berlin, Berlin"/>
      <postal_code data="Berlin"/>
      <latitude_e6 data=""/>
      <longitude_e6 data=""/>
      <forecast_date data="2011-08-24"/>
      <current_date_time data="2011-08-24 09:50:00 +0000"/>
      <unit_system data="SI"/>
    </forecast_information>
    <current_conditions>
      <condition data="Klar"/>
      <temp_f data="73"/>
      <temp_c data="23"/>
      <humidity data="Luftfeuchtigkeit: 78*%"/>
      <icon data="/ig/images/weather/sunny.gif"/>
      <wind_condition data="Wind: W mit 11 km/h"/>
    </current_conditions>
    <forecast_conditions>
      <day_of_week data="Mi."/>
      <low data="21"/>
      <high data="30"/>
      <icon data="/ig/images/weather/mostly_sunny.gif"/>
      <condition data="Teils sonnig"/>
    </forecast_conditions>
    <forecast_conditions>
      <day_of_week data="Do."/>
      <low data="23"/>
      <high data="29"/>
      <icon data="/ig/images/weather/chance_of_storm.gif"/>
      <condition data="Vereinzelt stürmisch"/>
    </forecast_conditions>
    <forecast_conditions>
      <day_of_week data="Fr."/>
      <low data="19"/>
      <high data="32"/>
      <icon data="/ig/images/weather/sunny.gif"/>
      <condition data="Klar"/>
    </forecast_conditions>
    <forecast_conditions>
      <day_of_week data="Sa."/>
      <low data="14"/>
      <high data="21"/>
      <icon data="/ig/images/weather/chance_of_rain.gif"/>
      <condition data="Vereinzelt Regen"/>
    </forecast_conditions>
  </weather>
</xml_api_reply>
Diese Datei enthält - neben den aktuellen Daten - sogar eine Vorhersage für die nächsten drei Tage.

Im Abschnitt xml_api_reply\weather\xxx_conditions\icon ist in der Regel sogar der Link zu einem Icon angegeben, so daß sich die Anzeige dieses Bildes als Marker anbietet.
Leider enthalten die Abschnitte xml_api_reply\weather\forecast_information\latitud e_e6 und xml_api_reply\weather\forecast_information\longitu de_e6 keine Angaben, so daß die Koordinaten für den Marker erst über eine Geocoding-Abfrage ermittelt werden müssen.

Die programmtechnische Umsetzung ist relativ einfach: Die XML-Datei wird mit Hilfe eine TIdHTTP-Komponente abgefragt und über eine TXMLDocument-Komponente geparst. Der Gebrauch des Geocoders und das Hinzufügen von Markern wurde schon in früheren Demos gezeigt.
Dabei ist lediglich zu beachten, daß die Eigenschaft CharSet des Request-Objektes auf UTF-8 zu setzten ist
Delphi-Quellcode:
  IdHTTP1.Request.CharSet:='UTF-8';
  //...
, damit der Google-Server die XML-Datei auch wirklich in der gewünschten Sprache liefert.

Damit ist es zum Beispiel möglich, das Wetter für Frankfurt am Main in hebräischer
screenshot_2.jpg
für München in russischer
screenshot_3.jpg
oder für Graz in thailändischer Sprache anzeigen zu lassen:
screenshot_4.jpg

Interessant ist das Sonnensymbol links unten in Frankreich: Hier wurde als Sprache japanisch (ja) gewählt. Wahrscheinlich sieht die Sonne in Japan anders aus, als im Rest der Welt...

Im Quelltext der Demo wird noch ein weiterer Weg beschrieben:
Bei einem Klick mit der linken Maustaste auf die Karte wird (falls vorhanden) die Wetterinformation für diesen Punkt abgefragt und angezeigt. Der zugehörige Ort wird über Reverse Geocoding ermittelt.
Angehängte Dateien
Dateityp: zip GoogleWeather_Source&Exe.zip (1,00 MB, 201x aufgerufen)
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (24. Aug 2011 um 15:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von duff
duff

Registriert seit: 26. Jan 2005
Ort: Brühl
76 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Google Maps über COM (Component Object Model)

  Alt 24. Aug 2011, 15:01
KLASSE
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#5

AW: Google Maps über COM (Component Object Model)

  Alt 24. Aug 2011, 15:20
Echt tolles Projekt. Planst du auch die Unterstützung von Bing Maps? Bing Maps WPF Control

Viele Grüße,
Florian
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#6

AW: Google Maps über COM (Component Object Model)

  Alt 24. Aug 2011, 16:13
Florian und duff,

vielen Dank!

Eine Bing-Unterstützung wird es ebenso geben wie die Nutzung von OpenStreetMap-Karten. Allerdings nicht im Rahmen dieses Projektes, da das immer vom Internet Explorer abhängig ist und durch dessen JavaScript-Engine nicht gerade mit Warp-Geschwindigkeit arbeitet.
Deshalb habe ich schon seit einigen Wochen parallel dazu einen Karten-Viewer in Arbeit, der nativ in Delphi geschrieben ist und neben der Karten-Anzeige noch etwas mehr zu bieten hat - so zum Beispiel die Anzeige von Giga- und Terrapixel-Bildern. Schon jetzt ist diese Komponente um den Faktor 5 bis 10 schneller als der Zugriff über JavaScript-API's.
Durch die Abkopplung vom IE-ActiveX und dem neuen Compiler von XE2 ist eine plattformübergreifende Nutzung geplant.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#7

AW: Google Maps über COM (Component Object Model)

  Alt 24. Aug 2011, 16:45
Klingt sehr interessant! Freu mich schon, mehr davon zu hören.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
DELPHI | (google maps) This thread Refback 11. Nov 2011 09:07
Twebbrowser HTML tag to UniHTMLFrame1 - uniGUI Discussion Forums This thread Refback 4. Nov 2011 06:52
DoraDev1975: google maps This thread Refback 23. Sep 2011 08:18
delphi osm - Google Search Post #0 Refback 19. Sep 2011 09:02
DoraDev1975: ?&#3636;????? 2011 This thread Refback 11. Sep 2011 16:39
DoraDev1975 This thread Refback 30. Aug 2011 10:13
Untitled document This thread Refback 25. Jun 2011 19:57
Interact with Google Maps in a TWebBrowser from Delphi | Ramblings This thread Refback 26. Jan 2011 05:12
google maps mit delphi link - Google Search This thread Refback 24. Jan 2011 14:24
google maps mit delphi - Google Search This thread Refback 24. Jan 2011 14:20
Untitled document This thread Refback 19. Jan 2011 21:49

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz