Heim > Web-Frontend > js-Tutorial > Mapping mit Geocoder PHP und Broschüre.js

Mapping mit Geocoder PHP und Broschüre.js

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2025-02-22 10:10:14
Original
789 Leute haben es durchsucht

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": "*"
  }
}
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

Geocoder

einrichten

Geocoder bezeichnet sich als die Geocoder -Bibliothek für PHP. Es kann in drei einfachen Schritten verwendet werden:

  1. Registrieren Sie einen Adapter
  2. Registrieren Sie einen Anbieter
  3. 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();
Nach dem Login kopieren
Nach dem Login kopieren

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 muss

Fü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": "*"
  }
}
Nach dem Login kopieren
Nach dem Login kopieren
Geocode

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>
Nach dem Login kopieren
Integrieren in die blutblatt.js

brodt.js ist eine leistungsstarke JavaScript -Bibliothek, die die Zuordnung sehr einfach macht.

Karten bestehen aus drei Teilen:

    fliesen
  1. Interaktionsschicht (typischerweise über JavaScript und CSS)
  2. Datenpunkte
Die Kacheln sind die 256 x 256 Pixelquadrate, die das Kartendetail anzeigen. Mit Diensten wie MapBox und CloudMade können Sie Ihre eigenen Tilesets erstellen. In diesem Beispiel habe ich ein kostenloses Konto mit Cloudemade erstellt und verwendet den API -Schlüssel, um Kacheln aus ihrem Hosting -Dienst anzuzeigen.

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();
Nach dem Login kopieren
Nach dem Login kopieren
Die Datenpunkte wurden früher mit meinem Geocoder -Code erstellt. Ich muss einfach das Datenarray so formatieren, wie die Flugblätter erwartet.

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);
Nach dem Login kopieren
Da die Blättchen den Kartencode in ein vorhandenes DOM -Element injiziert, müssen wir zuerst dieses Element in unserem HTML definieren. Wir können dies tun, indem wir einfach ein DIV mit einer eindeutigen ID erstellen:

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();
    }
}
Nach dem Login kopieren
Jetzt bauen wir die drei Teile unserer Karte. Um die Kacheln zu registrieren, nennen wir einfach die integrierte Methode tilelayer (), definieren Attribute und zoome Ebene, falls gewünscht, und addto () -Methode anhängen:

<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>
Nach dem Login kopieren
Schließlich drucken wir unsere Kartendaten mit dem zuvor definierten PHP -Array aus und stellen sicher, dass sich die Karten auf diese Datenpunkte konzentriert, indem sie sie als Gruppe zusammenfindet. Alles in allem wäre das JavaScript im Fußzeile:

$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}\");";
}
Nach dem Login kopieren
Wenn Sie so weit gekommen sind, werden Sie feststellen, dass nichts passiert.

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.

auf

hä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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage