Ich muss alle Daten aus der Tabelle, die Breiten/Längenwerte hat zu holen. Tatsächlich habe ich nur alle Breiten/Längen Werte, die innerhalb von 1000 ist Meilen von einer Quelle, also für das ich Konzept verwenden & es Berechnung der Breiten/Längen richtig, aber wenn ich eine Suchabfrage erschaffe Daten zu holen, welche table.latitudes < = Breiten Nord- und table.latitudes> = Breite SüdWie finden Sie alle Abfrage in CakePHP Bedingungen mit größer als und kleiner als gleich einem Wert
hatÄhnlich für Längen.
Ich habe diese Berechnung Code & Fund Abfrage gemacht
$lat1 = $coodSearch['lat'];
$lon1 = $coodSearch['long'];
$d = $coodSearch['dis'];
$r = 3959;//earth's radius in miles
//compute max and min latitudes/longitudes for search square
$latN = rad2deg(asin(sin(deg2rad($lat1)) * cos($d/$r) + cos(deg2rad($lat1)) * sin($d/$r) * cos(deg2rad(0))));
$latS = rad2deg(asin(sin(deg2rad($lat1)) * cos($d/$r) + cos(deg2rad($lat1)) * sin($d/$r) * cos(deg2rad(180))));
$lonE = rad2deg(deg2rad($lon1) + atan2(sin(deg2rad(90)) * sin($d/$r) * cos(deg2rad($lat1)), cos($d/$r) - sin(deg2rad($lat1)) * sin(deg2rad($latN))));
$lonW = rad2deg(deg2rad($lon1) + atan2(sin(deg2rad(270)) * sin($d/$r) * cos(deg2rad($lat1)), cos($d/$r) - sin(deg2rad($lat1)) * sin(deg2rad($latN))));
$this->loadModel('City');
$finder1 = array('and' => array('City.latitude <=' => $latN,'City.latitude >=' => $latS));
$latArr = $this->City->find('all', array('conditions' => $finder1));
$finder2 = array('and' => array('City.longitude >=' => $lonE,'City.longitude <=' => $lonW));
$longArr = $this->City->find('all', array('conditions' => $finder2));
Ich habe geprüft Errechneter Wert ($ Latn, $ lone) seine Angabe Ergebnis aber finden alle Abfrage nicht funktioniert.
Bitte helfen Sie mir, wo ich falsch liege.
"_Doesn't work_" ist der Trick nicht eine richtige Beschreibung des Problems. – ndm
Tipp: Wenn Sie das Rad nicht neu erfinden wollen, können Sie hier ein einfach zu integrierendes [Verhalten] (http://www.dereuromark.de/2012/06/12/geocoding-with-cakephp/) verwenden: '$ this-> setDistanceAsVirtualField ($ lat, $ lng);' und es wird funktionieren, bis die Box. Sie können das Verhalten auch verwenden, um zu erfahren, wie eine solche Abfrage erstellt wird. – mark