Mapping mit Geocoder PHP und Broschüre.js
interaktive Karten in einer Webanwendung haben viele großartige Verwendungen. Von der Visualisierung von Daten bis hin zum Hervorheben von Interessenspunkten wird erwartet, dass Karten Ideen im Kontext des Standorts problemlos kommunizieren.
Der schwierigste Teil ist jedoch, diese Daten in Koordinaten umzuwandeln, die die Karte verstehen kann. Glücklicherweise ermöglicht es uns mit Geocoder PHP eine Verbindung zu verschiedenen Geo-Coding-Anbietern. In Kombination mit bluglet.js ist eine einfache JavaScript -Bibliothek, die Karten erstellt, ein Kinderspiel.
Key Takeaways
- Geocoder -PHP und Blättchen können effektiv kombiniert werden, um interaktive Karten innerhalb einer Webanwendung zu erstellen, wodurch Daten in Koordinaten konvertiert werden, die die Karte leicht verstehen kann.
- Die Geocoder-Bibliothek ermöglicht die Verbindung zu verschiedenen Geo-Coding-Anbietern und die Möglichkeit, Ihren Adapter auszuschalten, wenn sich Ihre Anforderungen ändern, ohne wie Ihre Anwendung umschreiben zu müssen.
- bluting.js ist eine leistungsstarke JavaScript -Bibliothek, die die Zuordnung durch den Umgang mit der Interaktionsschicht der Karten erleichtert, einschließlich des Erstellens einzelner Markierungen und der Formatierung des Datenarrays auf eine Weise, wie Blattblatt erwartet.
- Das Erscheinungsbild und die Interaktivität der Karte können mit verschiedenen Optionen und Funktionen von Blättchen -Js -Js angepasst werden. Die Daten für diese Funktionen können mithilfe von PHP aus einer Datenbank abgerufen und anschließend an die Flugblätter -JS -Funktionen weitergeleitet werden.
Start
mit Komponist, einschließlich der Geocoder -PHP -Bibliothek ist einfach:
{ "require": { "willdurand/geocoder": "*" } }
Fügen wir auch ein paar HTML zu einer einfachen Index.php-Datei hinzu, um Bootstrap einzuschließen, damit wir eine gut aussehende Umgebung haben, um unsere Karte in:
anzuzeigen<?php require 'vendor/autoload.php'; ?> <!DOCTYPE html> <html> <head> <title>A simple map with Geocoder PHP and Leaflet.js</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"> </head> <body> <div > <div > <div > <h1 >A simple map with Geocoder PHP and Leaflet.js</h1> </div> <div > <div > </div> </div> </div><!-- /row --> </div> <!-- /container --> <script></script> <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> </body> </html>
Geocoder
einrichtenGeocoder bezeichnet sich als die Geocoder -Bibliothek für PHP. Es kann in drei einfachen Schritten verwendet werden:
- Registrieren Sie einen Adapter
- Registrieren Sie einen Anbieter
- Geocode!
Registrieren Sie einen Adapter
Der Adapter dient als Mechanismus, um über ihre API zu verbinden und Daten an den ausgewählten Anbieter zu erhalten. Einige Adapter verwenden die integrierte Funktionalität innerhalb von PHP 5.3 wie Locken und Sockeln. Andere verwenden, wie Buzz, Guzzle und Zend HTTP-Client, Open-Source-Bibliotheken von Drittanbietern, nach denen Sie einfach ihre Abhängigkeit zu Ihrer Komponistendatei hinzufügen müssen.
Die Schönheit der Geocoder -Bibliothek ist diese Abstraktion des Adapterschritts. Sie können Ihren Adapter austauschen, wenn sich Ihre Anforderungen ändern, ohne dass Sie die Art und Weise, wie Ihre Anwendung die Daten empfängt, neu schreiben.
Für dieses Beispiel werden wir Curl und die enthaltene Curlhttpadapter -Klasse in der Geocoder -PHP -Bibliothek verwenden.
In unserer Datei index.php fügen wir den Adapter hinzu:
// Setup geocoder adapter. $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
Registrieren Sie einen Anbieter
Es gibt viele Geocoding-Anbieter, die von der Geocoder-PHP-Bibliothek außerhalb des Boxs unterstützt werden, einschließlich Google Maps, Bing Maps, Nominatim über OpenStreetmap und TomTom.
Die vollständige Liste finden Sie im Readme des Geocoder -PHP -Repositorys.
Jeder Anbieter, der durch seine jeweiligen Klassen dargestellt wird, hat seine eigenen Optionen. Abhängig von Ihren Anforderungen können Sie mehrere Anbieter für verschiedene Umstände registrieren. Dies kann nützlich sein, wenn Ihre Bewerbung bestimmte Straßen in San Jose, Costa Rica mit OpenStreetmap, abbilden und eine kurze Route in Peking, China, mit Baidu.
finden mussFür dieses Beispiel werde ich einfach Google Maps verwenden, aber registrieren Sie es so, dass ich es einfach einem Array hinzufügen muss, wenn ich in Zukunft einen anderen Anbieter hinzufügen möchte:
{ "require": { "willdurand/geocoder": "*" } }
Wir können die Adresse jetzt an die Geocode () -Methode innerhalb Ihres neu instanziierten $ Geocoder -Objekts übergeben. Dadurch wird ein Ergebnisobjekt zurückgegeben, das durch den zuvor ausgewählten Anbieter instanziiert wird. Dieses Ergebnisobjekt hat die Methoden getLatitude () und getlongitude (), die wir verwenden können.
<?php require 'vendor/autoload.php'; ?> <!DOCTYPE html> <html> <head> <title>A simple map with Geocoder PHP and Leaflet.js</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"> </head> <body> <div > <div > <div > <h1 >A simple map with Geocoder PHP and Leaflet.js</h1> </div> <div > <div > </div> </div> </div><!-- /row --> </div> <!-- /container --> <script src="https://img.php.cn/ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> </body> </html>
brodt.js ist eine leistungsstarke JavaScript -Bibliothek, die die Zuordnung sehr einfach macht.
Karten bestehen aus drei Teilen:
- fliesen
- Interaktionsschicht (typischerweise über JavaScript und CSS)
- Datenpunkte
Die Wechselwirkungsschicht wird von blutblättern.js behandelt. Ich füge einfach die Blättchen -JavaScript- und CSS -Bibliothek in unsere Starter HTML -Vorlage ein:
// Setup geocoder adapter. $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
In diesem einfachen Beispiel werde ich einfach einzelne Markierungen als JavaScript -Variablen erstellen, die über von PHP erzeugte Zeichenfolgen in meine Karte aufgenommen werden.
Die Flugblatt hat die Option, dass diese Daten auch über das Geojson -Format für größere und dynamischere Datensätze übergeben werden.
// Create a chain of providers. // Be sure to include my previously created adapter. $chain = new \Geocoder\Provider\ChainProvider( array( new \Geocoder\Provider\GoogleMapsProvider($adapter), ) ); // Instantiate the geocoder. $geocoder = new \Geocoder\Geocoder(); // Register my providers. $geocoder->registerProvider($chain);
Wir können dann diese ID in der Blätterblatt ansprechen, indem wir die integrierte MAP () JavaScript-Methode aufrufen und unsere ID in der Fußzeile übergeben:
// Demo locations $locations = array( array( 'address' => '3324 N California Ave, Chicago, IL, 60618', 'title' => 'Hot Dougs', ), array( 'address' => '11 S White, Frankfort, IL, 60423', 'title' => 'Museum', ), array( 'address' => '1000 Sterling Ave, , Flossmoor, IL, 60422', 'title' => 'Library', ), array( 'address' => '2053 Ridge Rd, Homewood, IL, 60430', 'title' => 'Twisted Q', ) ); foreach ($locations as $key => $value) { // Try to geocode. try { $geocode = $geocoder->geocode($value['address']); $longitude = $geocode->getLongitude(); $latitude = $geocode->getLatitude(); } catch (Exception $e) { echo $e->getMessage(); } }
<link rel="stylesheet" href="//cdn.leafletjs.com/leaflet-0.6.4/leaflet.css" /> <script src="//cdn.leafletjs.com/leaflet-0.6.4/leaflet.js"></script>
$mapdata = $marker_group = array(); foreach ($locations as $key => $value) { // Try to geocode. try { $geocode = $geocoder->geocode($value['address']); $longitude = $geocode->getLongitude(); $latitude = $geocode->getLatitude(); // Create map data array $mapdata[] = markerCreator($latitude, $longitude, $value['title'], $key); // Marker grouping array $marker_group[] = "marker{$key}"; } catch (Exception $e) { echo $e->getMessage(); } } function markerCreator($lat, $long, $label, $key) { return "var marker{$key} = L.marker([{$lat}, {$long}]).addTo(map); marker{$key}.bindPopup(\"{$label}\");"; }
Dies liegt daran, dass die Blättchen keine Eigenschaften in die Höhe oder Breite der Karten -DIV injiziert, sodass Sie sie stylen und die Größe ändern können, wie Sie möchten. Geben Sie einfach Ihrer Div eine Höhe und Breite, und Ihre Karte sollte erscheinen!
Schlussfolgerung
Sie können schöne, interaktive Karten mit der Geocoder -PHP -Bibliothek und der Blättchen.js erstellen. Schauen Sie sich unbedingt die jeweilige Dokumentation jedes Projekts an, da es viele weitere erweiterte Anpassungen gibt, die möglich sind.
Schauen Sie sich die Demo für diesen Artikel an oder geben Sie sie bei Github.
aufhäufig gestellte Fragen (FAQs) zum Zuordnen mit Geocoder -PHP und Blättchen JS
Wie kann ich die Blättchen -JS in PHP integrieren. Zunächst müssen Sie die Blättchen -JS -Bibliothek in Ihre PHP -Datei aufnehmen. Dies kann durch das Herunterladen der Bibliothek und das Verknüpfen in Ihrer PHP -Datei oder mithilfe eines CDN erfolgen. Sobald die Bibliothek enthalten ist, können Sie eine Karte mit der Funktion L.Map () initialisieren. Mit verschiedenen Flugblättern können Sie dann Schichten, Markierungen und andere Funktionen zur Karte hinzufügen. Die Daten für diese Funktionen können mit PHP aus einer Datenbank abgerufen und anschließend an die Flugblatt -JS -Funktionen übergeben werden. von Adressen in geografische Koordinaten umwandeln, mit denen Sie Markierungen auf einer Karte platzieren oder die Karte positionieren können. In der Broschüre JS können Sie einen Geocoding -Dienst wie Nominatim oder die Geocoding -API von Google verwenden, um Adressen in Koordinaten umzuwandeln. Sobald Sie die Koordinaten haben, können Sie die Funktion L.Marker () verwenden, um einen Marker auf der Karte an den angegebenen Koordinaten zu platzieren. 🎜>
PHP kann verwendet werden, um Daten aus einer Datenbank zu holen, indem die integrierten Funktionen für die Datenbankinteraktion verwendet werden. Wenn Sie beispielsweise eine MySQL -Datenbank verwenden, können Sie die Funktion mySQLI_Connect () verwenden, um eine Verbindung zur Datenbank herzustellen und dann die Funktion mySQLi_query () zu verwenden, um eine SQL -Abfrage auszuführen und Daten abzuholen. Die abgerufenen Daten können dann an die Flugblatt -JS -Funktionen übergeben werden, um der Karte Funktionen hinzuzufügen.Wie kann ich meiner Karte interaktive Funktionen hinzufügen? auf deine Karte. Sie können beispielsweise die Funktion L.Popup () verwenden, um Ihrer Karte Popups hinzuzufügen, wodurch zusätzliche Informationen angezeigt werden können, wenn ein Marker oder eine andere Funktion geklickt wird. Sie können auch die Funktion L.Control.layers () verwenden, um eine Ebenensteuerung hinzuzufügen, mit der Benutzer zwischen verschiedenen Basisschichten und Overlay -Ebenen wechseln können.
Wie kann ich das Erscheinungsbild meiner Karte anpassen? Sie können beispielsweise die Funktion SetView () verwenden, um das anfängliche geografische Zentrum und das Zoomebene der Karte festzulegen. Sie können auch die Funktion L.Tilelayer () verwenden, um der Karte eine Fliesenschicht hinzuzufügen, die das visuelle Erscheinungsbild der Basisschicht der Karte bestimmt. Der Optionsparameter der Funktion L.map () kann verwendet werden, um verschiedene andere Optionen festzulegen, z. Unter Verwendung von Geocoding -Diensten? Diese Fehler können mithilfe von Fehlerbehandlungstechniken aus der von Ihnen verwendeten Programmiersprache behandelt werden. In PHP können Sie beispielsweise die Anweisung Try-Catch verwenden, um Ausnahmen zu fangen und sie angemessen umzugehen.
Wie kann ich die Leistung meiner Karte optimieren? Die Leistung Ihrer Karte. Eine Möglichkeit besteht darin, eine Fliesenschicht zu verwenden, die für die Leistung optimiert ist, z. B. eine Vektorfliesenschicht. Eine andere Möglichkeit besteht darin, die Anzahl der auf der Karte gleichzeitig angezeigten Funktionen zu begrenzen, beispielsweise mithilfe von Clustering oder nur durch Anzeigen von Funktionen in der aktuellen Kartenansicht. Sie können auch die Leistung Ihres PHP -Codes optimieren, indem Sie effiziente Datenbankabfragen verwenden und gegebenenfalls Ergebnisse zwischen den Ergebnissen zwischengespeichert werden. Zeigt auf verschiedenen Bildschirmgrößen und -geräten korrekt an. Dies kann durch Verwendung von CSS -Medienabfragen erreicht werden, um die Größe und das Layout des Kartenbehälters basierend auf der Bildschirmgröße anzupassen. Sie können auch die MAP der Blättchen -JS -MAP verwenden. Benutzerdefinierte Markierungen können Ihrer Karte mit der Funktion L.Icon () hinzugefügt werden. Mit dieser Funktion können Sie ein benutzerdefiniertes Bild angeben, das als Markierungssymbol verwendet werden soll. Sie können auch die Größe, den Ankerpunkt und andere Eigenschaften des Symbols angeben. Das benutzerdefinierte Symbol kann dann verwendet werden, wenn ein Marker erstellt wird, indem es als Option an die Funktion L.Marker () übergeben wird. 🎜> Broschüre JS liefert die Funktion L.Geojson (), mit der Daten aus einer Geojson -Datei auf Ihrer Karte angezeigt werden können. Diese Funktion nimmt ein Geojson -Objekt als Eingabe an und erstellt eine Ebene, die die von den Geojson -Daten beschriebenen Funktionen enthält. Die Funktionen können mit verschiedenen Optionen und Methoden, die von der Funktion L.Geojson () bereitgestellt werden, gestylt und interagiert werden. Die Geojson -Daten können mit PHP oder JavaScript aus einer Datei oder einem Server abgerufen werden.
Das obige ist der detaillierte Inhalt vonMapping mit Geocoder PHP und Broschüre.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.
