Google Maps API: Koordinaten eines Markers in PHP auslesen
Transcription
Google Maps API: Koordinaten eines Markers in PHP auslesen
Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ Startseite Leistungen Magazin Weitere Inhalte Intern Kontakt Themen → Übersicht Grafik & Webdesign WordPress SEO Magento Performance-Optimierung Programmierung Google Maps API: Koordinaten eines Markers in PHP auslesen Die Google Maps API ist die meistverwendete Kartenapplikation im Internet. Programmierer können die kostenlose Programmierschnittstelle (API) nutzen, um Nutzer mit den Karten interagieren zu lassen – zum Beispiel, um den Nutzer seinen Wohnort auf der Karte auswählen zu lassen. Im Rahmen dieses Tutorials erfahren Sie, wie die Platzierung eines Markers durch den Anwender über die Google Maps API realisiert und an ein PHP Programm übergeben werden kann. Anwendungsbeispiel 1 von 10 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ Nehmen wir an, Sie betreiben ein Branchenverzeichnis für Milchbauern. Wenn ein neues Unternehmen hinzugefügt wird, soll der Standort des Bauernhofes übermittelt werden. An dieser Stelle können Sie die Google Maps API anwenden: Der User erhält einen Kartenausschnitt, auf dem er einen sogenannten Marker platzieren kann. Speichert er das Formular ab, sollen die Koordinaten des Markers ausgelesen und an ein PHP-Script übergeben werden, um sie beispielsweise in eine Datenbank zu speichern. Technische Vorgehensweise Ziel der Anwendung ist die Übermittlung der durch den Nutzer auf der Karte ausgewählten Koordinaten, also der geografischen Breite (Latitude) und der geografischen Länge (Longitude), in Form von PHP-Variablen. Dazu werden zwei Dateien benötigt: Erstens eine HTML-Datei, auf der wir die Karte platzieren werden, im Folgenden handelt es sich dabei um die karte.html. Zweitens wird ein PHP-Script zur Verarbeitung der durch $_POST übermittelten Daten benötigt, im Folgenden wird mit einer maps.php gearbeitet. Schritt 1: API-Key registrieren Wer mit der Google Maps API arbeiten möchte, benötigt einen API-Key. Dieser ist kostenlos und muss unter http://code.google.com/intl/de-DE/apis /maps/signup.html registriert werden. Schritt 2: Karte in der HTML-Datei platzieren Im zweiten Schritt muss die vorher angesprochene karte.html angelegt werden. Hierfür kann die folgende Vorlage verwendet werden, wobei IHR_API_KEY_HIER durch den vorher generierten Google Maps API Key zu ersetzen ist: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 von 10 <html> <head> <title>Google Maps API und PHP</title> <script src="http://maps.google.com/maps?file=api&v=2&key=IHR_API_KEY_HIER" type="text/javascript"></script> </head> <body onunload="GUnload()"> <div id="map" style="width: 500px; height: 400px"></div> <script type="text/javascript"> // Überprüfen, ob der Browser des Benutzers mit der Google-Maps API kompatibel ist if (GBrowserIsCompatible()) { // Dem Div-Container mit der ID 'map' die Karte zuweisen var map = new GMap2(document.getElementById("map")); 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ //Der Karte Kontrollelemente (Zoom + Richtung) zuweisen 18 map.addControl(new GLargeMapControl()); 19 map.addControl(new GMapTypeControl()); 20 21 //Die Karte auf Deutschland ausrichten; erst werden die Koordinaten festgelegt, dann der Zoomfaktor von 5 22 var center = new GLatLng(50.95, 10.28); 23 map.setCenter(center, 5); 24 } 25 else 26 { 27 alert("Leider ist Ihr Browser mit der Google-Maps API nicht kompatibel!"); 28 } 29 30 </script> 31 </body> </html> Bei Aufruf der nun erstellten karte.html erhält der Nutzer eine auf Deutschland gerichtete Karte. Ihm werden die Werkzeuge “Zoom” und “Richtung” mit an die Hand gegeben, um innerhalb der Karte zu navigieren und später den Marker platzieren zu können. Schritt 3: HTML-Datei für Datenübergabe modifizieren Im folgenden Schritt wird der Benutzer einen Marker platzieren können – er übermittelt im Hintergrund also die Informationen für die geografische Länge und die geografische Breite. Um diese an ein PHP-Script zu übergeben, müssen sie zunächst innerhalb der HTML-Datei zwischengespeichert werden. Hierfür werden wir uns innerhalb eines HTML-Formulars zwei versteckten INPUT-Feldern sowie eines SUBMIT-Buttons bedienen, über den der Nutzer nach Auswahl der Kartenposition die Eingaben speichern kann. Die Erweiterung der HTML-Datei sieht wie folgt aus: 1 2 3 4 5 <form action="maps.php" method="post"> <input type="hidden" id="lat" name="lat" value="50.95" /> <input type="hidden" id="lng" name="lng" value="10.28" /> <input type="submit" value="Auswahl speichern"> </form> Schritt 4: Den Marker hinzufügen Was nun noch fehlt ist der Marker, der in der Dokumentation der Google Maps API eine freiverschiebbare Markierung genannt wird (weitere Informationen: Code Dokumentation Google). Fügen Sie also folgende Codezeile unter Zeile 23 (map.setCenter(center, 5);) aus dem obrigen Beispiel ein. 3 von 10 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ 1 marker = new GMarker(center, {draggable: true}); Nun muss das Script noch angewiesen werden, die value-Werte der versteckten INPUT-Felder durch die durch den Nutzer ausgewählten Koordinaten zu ersetzen: 1 2 3 4 5 GEvent.addListener(marker, "dragend", function() { document.getElementById('lat').value = marker.getPoint().lat(); document.getElementById('lng').value = marker.getPoint().lng(); }); … um anschließend den Marker noch zur Karte hinzuzufügen: 1 map.addOverlay(marker); Zwischenergebnis: Fertigstellung der karte.html Wenn Sie die vorherigen Schritte befolgt haben, wird Ihre vollständige karte.html nun folgendermaßen aussehen: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 4 von 10 <html> <head> <title>Google Maps API und PHP</title> <script src="http://maps.google.com/maps?file=api&v=2&key=IHR_API_KEY_HIER" type="text/javascript"></script> </head> <body onunload="GUnload()"> <div id="map" style="width: 500px; height: 400px"></div> <form action="maps.php" method="post"> <input type="hidden" id="lat" name="lat" value="50.95" /> <input type="hidden" id="lng" name="lng" value="10.28" /> <input type="submit" value="Auswahl speichern"> </form> <script type="text/javascript"> // Überprüfen, ob der Browser des Benutzers mit der Google-Maps API kompatibel ist 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ if (GBrowserIsCompatible()) 18 { 19 // Dem Div-Container mit der ID 'map' die Karte zuweisen 20 var map = new GMap2(document.getElementById("map")); 21 22 //Der Karte Kontrollelemente (Zoom + Richtung) zuweisen 23 map.addControl(new GLargeMapControl()); 24 map.addControl(new GMapTypeControl()); 25 26 //Die Karte auf Deutschland ausrichten; erst werden die Koordinaten festgelegt, dann der Zoomfaktor von 5 27 28 var center = new GLatLng(50.95, 10.28); 29 map.setCenter(center, 5); 30 31 // Marker als 'verschiebbare Markierung' erstellen 32 marker = new GMarker(center, {draggable: true}); 33 34 // Wenn der Marker fallengelassen wird, die Koordinaten in die INPUT-Felder speichern 35 GEvent.addListener(marker, "dragend", function() 36 { 37 document.getElementById('lat').value = marker.getPoint().lat(); 38 document.getElementById('lng').value = marker.getPoint().lng(); 39 }); 40 41 // Marker der Karte hinzufügen 42 map.addOverlay(marker); 43 } 44 else 45 { 46 alert("Leider ist Ihr Browser mit der Google-Maps API nicht kompatibel!"); 47 } 48 </script> 49 </body> 50 </html> Schritt 5: Das PHP-Script maps.php Nun ist der größte Teil der Anwendung fertig – fehlt nur noch das PHP-Script maps.php zum Auslesen der ausgewählten Koordinaten. Hierbei werden einfach die Werte der versteckten INPUT-Fleder über as superglobale Array $_POST ausgelesen: 1 <?php 2 $lat = $_POST["lat"]; 3 $lng = $_POST["lng"]; 5 von 10 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ 4 ?> Ab sofort stehen die Breitenangabe ($lat) und die Längenangabe ($lng) in Form von PHP-Variablen zur weiteren Verarbeitung zur Verfügung. Nun wäre beispielsweise die Speicherung in eine MySQL-Datenbank möglich. Ausblick Eine Verbesserung der besprochenen Anwendung wäre sicherlich eine Erweiterung mittels AJAX, sodass die Benutzerangaben komplett im Hintergrund gespeichert werden, ohne, dass der Nutzer erst ein HTML-Formular absenden muss. Trotzdem haben Sie auch mit dieser Version ein starkes Werkzeug, um eine geografische Benutzerinteraktion zu erlauben. In der oben verlinkten Google Code Dokumentation finden sich weitere Möglichkeiten, wie die Karte noch benutzerfreundlicher gestaltet werden kann: Zum Beispiel über ein Suchfeld, in das ein Ort oder eine Postleitzahl eingegeben werden kann – so ersparen sich die weniger in Geografie bewanderten Nutzer langes Suchen auf der Karte. Veröffentlicht am 10. Februar 2011, abgelegt unter Programmierung Weitere interessante Artikel Keine Treffer 2 Kommentare Tino sagt: Hallo, ich beschäftige mich erst seit dieser Woche mit der Google Maps API. Das Tutorial hat mir nun super geholfen und ich konnte das Script so anpassen das ich Objekte auswähle, diese Koordinaten in einer DB speicher und auf der Webseite ausgeben kann. Vorher musste ich mir die Koordinaten immer erst manuell ermitteln und in die DB speichern. 6 von 10 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ Danke. Super Beitrag! Gruß Tino # 16 Februar 2011 um 08:33 Uhr Matthias Rasche (Redaktion) sagt: Danke für Dein Feedback, Tino. Und viel Erfolg bei den weiteren Arbeiten mit der Google Maps API. :) Viele Grüße, Matthias Rasche # 16 Februar 2011 um 09:59 Uhr Hinterlassen Sie einen Kommentar! Hinterlassen Sie einen Kommentar oder schicken Sie einen Trackback von Ihrem Blog. Sie können außerdem weitere Kommentare via RSS abonnieren. Name (erforderlich) E-Mail (wird nicht veröffentlicht) (erforderlich) Website (optional) 7 von 10 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ Neue Artikel im Magazin 8 von 10 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ Anzeigen Leistungen: PHP Programmierung PHP Neues aus unserem Blog SEO Street – Artikelverzeichnisse verfügbar WebundSEO im Jahr 2011 Geänderte Telefonnummer WebundSEO verabschiedet sich in die Sommerpause Themenrelevante News über Twitter Anzeigen 9 von 10 18.04.2011 17:29 Google Maps API: Koordinaten eines Markers in PHP auslesen — WebundSEO http://www.webundseo.de/2011/02/google-maps-api-koordinaten-eines-markers-in-php-auslesen/ Urheberrecht bei WebundSEO · Unter Verwendung von WordPress und StudioPress · Impressum | Haftungsausschlus 10 von 10 18.04.2011 17:29