Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

So finden Sie mit PHP, MySQL aus einer Sammlung von Koordinaten (Längen- und Breitengrad) die nächstgelegenen StandorteL

Eine der beliebtesten Funktionen, die heutzutage von vielen Anwendungen angeboten wird, ist die Möglichkeit, die nächstgelegenen Register aus einer Datenbank zu finden, wenn eine benutzerdefinierte Position angegeben ist (Ihre aktuelle Position möglicherweise unter Angabe des Breiten- und Längengrads). Zum Beispiel im Immobiliengeschäft ist eine ziemlich nützliche Implementierung, wenn Sie sich einfach im Zentrum einer Stadt, zum Beispiel New York, platzieren könnten und die Anwendung es Ihnen ermöglicht, in den Karten die nächstgelegenen verfügbaren Häuser / Wohnungen in anzuzeigen ein Radius von 50/100 km:

Filter places by coordinates Google Maps

Die Idee an sich ist ziemlich cool, oder? Offensichtlich schließen wir keine Orte aus Google Maps ein, was bedeutet, dass die Markierungen offensichtlich unsere sind und in unserer eigenen Datenbank gespeichert werden. In diesem Artikel erklären wir Ihnen, wie Sie den nächstgelegenen Standort aus einer Sammlung von Koordinaten in MySQL ermitteln.

1. Unsere Marker-Datenbank verstehen

Zu Beginn benötigen Sie natürlich Speicherorte in Ihrer Datenbank. In unserem Fall verfügen wir über eine sehr einfache Datenbankstruktur, die für alle leicht verständlich ist. Die Datenbank kann mit der folgenden Abfrage erstellt werden:

CREATE TABLE `markers` (
  `id` bigint(20) NOT NULL,
  `lat` decimal(10,8) NOT NULL,
  `lng` decimal(11,8) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 NOT NULL
) ENGINE=
InnoDB DEFAULT CHARSET=utf8;

Es werden einfach Markierungen gespeichert, die durch einen Namen gekennzeichnet sind und die Koordinaten von Breite und Länge enthalten. Es enthält folgende Daten:

Data Markers Coordinates

Wenn wir die Markierungen der genannten Orte in Google Maps mit JavaScript platzieren:

var markers = [
    {
        "id": "1",
        "lat": "4.66455174",
        "lng": "-74.07867091",
        "name": "Bogot\u00e1"
    }, 
    {
        "id": "2",
        "lat": "6.24478548",
        "lng": "-75.57050110",
        "name": "Medell\u00edn"
    }, 
    {
        "id": "3",
        "lat": "7.06125013",
        "lng": "-73.84928550",
        "name": "Barrancabermeja"
    }, 
    {
        "id": "4",
        "lat": "7.88475514",
        "lng": "-72.49432589",
        "name": "C\u00facuta"
    }, 
    {
        "id": "5",
        "lat": "3.48835279",
        "lng": "-76.51532198",
        "name": "Cali"
    }, 
    {
        "id": "6",
        "lat": "4.13510880",
        "lng": "-73.63690401",
        "name": "Villavicencio"
    }, 
    {
        "id": "7",
        "lat": "6.55526689",
        "lng": "-73.13373892",
        "name": "San Gil"
    }
];

function setMarkers(map) {
    var image = {
        url: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png',
        size: new google.maps.Size(20, 32),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(0, 32)
    };

    for (var i = 0; i < markers.length; i++) {
        var marker = markers[i];
        var marker = new google.maps.Marker({
            position: {
                lat: parseFloat(marker.lat), 
                lng: parseFloat(marker.lng)
            },
            map: map,
            icon: image,
            shape: {
                coords: [1, 1, 1, 20, 18, 20, 18, 1],
                type: 'poly'
            },
            title: marker.name
        });
    }
}

Wir werden die folgende Ausgabe in unserer Karte erhalten:

Google Maps Markers Example

Jetzt funktioniert alles wie es sollte, die Karte funktioniert, die Markierungen befinden sich an der richtigen Stelle, aber jetzt müssen wir sie nach unserer Position (Bucaramanga) und nach einem bestimmten Entfernungsradius filtern. In diesem Artikel wird nicht behandelt, wie sie mit JavaScript gefiltert werden, sondern nur auf der Serverseite. Es liegt also an Ihnen, wie Sie sie später im Frontend anzeigen.

2. Verstehen, was wir tun müssen

Wir müssen als erstes verstehen, was wir in der Datenbank und theoretisch tun werden. Das folgende Schema enthält zwei Fragen, die wir beantworten müssen, um die Aufgabe zu erfüllen. Dabei müssen wir einen kreisförmigen Bereich durchsuchen, der durch eine Entfernung definiert ist, die wir als Suchradius bezeichnen:

Distance Between Coordinates Google Maps MySQL

Zu wissen, dass der Abstand zwischen dem ursprünglichen Ort und den anderen Koordinaten unbekannt ist: