Google Maps -Suchadressen nach benutzerdefinierter Region
-
27-10-2019 - |
Frage
Ich habe eine Datenbank mit Adressen und möchte in der Lage sein, einen Benutzer auf der Karte zu fallen und eine Region zu definieren, die auf dem Fahrbereich um diesen Punkt basiert. Ich habe mich gefragt, ob es eine Möglichkeit gab, meine Datenbank nach dieser benutzerdefinierten Region zu durchsuchen.
Lösung
Für das internationale System, das verwendet Kilometer, Ersetzen Sie einen Teil des Skripts durch diesen:
6371 * acos( cos( radians(LATITUDE1) ) * cos( radians( LATITUDE2 ) ) * cos( radians( LONGITUDE1 ) - radians(LONGITUDE2) ) + sin( radians(LATITUDE1) ) * sin( radians( lat ) ) ) AS DISTANCE
Quelle: http://www.codecodex.com/wiki/calculate_distance_between_two_points_on_a_globe#mysql
Andere Tipps
Sie sollten in der Lage sein, die Längen- und Breitengrad -Koordinaten des PIN -Drops zu erhalten, diese Daten dann an Ihren Server senden und ein Ergebnis mit der auf dieser Seite aufgeführten Abfrage zurückgeben: http://code.google.com/apis/maps/articles/phpsqlsearch.html
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
Sie müssten Ihre Adressen ebenfalls in Längengrad und Breiten geocode und sie jedoch mit jeder Adresse speichern. Dies ist der genaue Code, den ich verwendet habe, um Längengrad und Breiten für Adressen in meiner Datenbank zu kratzen:
/* Geocode Address
/***********************/
$query = $db->query("SELECT * FROM wholesale_clients WHERE hq_id IN (SELECT owner_id FROM storelocator)");
while($info = $query->fetch_array()) {
$address = str_replace(' ', '+', $info['address_1'] . ' ' . $info['address_2'] . ' ' . $info['suburb'] . ' ' . $info['state'] . ' ' . $info['zip'] . ' Australia');
$file = file_get_contents('https://maps.googleapis.com/maps/api/geocode/xml?address='.$address.'&sensor=false');
$file = xml2array($file);
$lat = $file['GeocodeResponse']['result']['geometry']['location']['lat'];
$lng = $file['GeocodeResponse']['result']['geometry']['location']['lng'];
//echo $info['hq_id'] . ' ' . $lat . ' ' . $lng . '<br />';
if(!empty($lat) && !empty($lng)) {
$db->query("UPDATE `storelocator` SET `lat` = '" . $lat . "', `lng` = '" . $lng . "', `updated` = 1 WHERE `owner_id` = '" . $info['hq_id'] . "'");
}
}
/***********************/
XML2Array -Funktion: http://www.bin-co.com/php/scripts/xml2array/