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.

War es hilfreich?

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/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top