У меня есть изоморфное приложение, которое загружается на сервер и клиент, а также. Меня беспокоит загрузка результатов для приложения на сервер. Мне нужно позвонить в API google maps, чтобы узнать широту и долготу места для бывшего www.mysite.com/search/New-York—NY—United-States ‘ тогда мне нужно найти его широту и долготу из API карт Google с кодом ниже в php (мой API в php)
$address= $this->input->get('address');
$geo = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($address).'&sensor=false');
$geo = json_decode($geo, true);
if ($geo['status'] = 'OK') {
$lat = $geo['results'][0]['geometry']['location']['lat'];
$lng = $geo['results'][0]['geometry']['location']['lng'];
}
Затем на основе этой широты и долготы я ищу свои результаты, как показано ниже
$radius = 6371;
$distance = 250;
// latitude boundaries
$maxlat = $lat + rad2deg($distance / $radius);
$minlat = $lat - rad2deg($distance / $radius);
// longitude boundaries (longitude gets smaller when latitude increases)
$maxlng = $lng + rad2deg($distance / $radius / cos(deg2rad($lat)));
$minlng = $lng - rad2deg($distance / $radius / cos(deg2rad($lat)));
С помощью приведенного выше кода я вычисляю максимальную и минимальную широту и долготу, а затем ищу свои результаты, применяя условия, указанные ниже.
$this->db->where('rv.LATITUDE >=', $minlat);
$this->db->where('rv.LATITUDE <=', $maxlat);
$this->db->where('rv.LONGTITUDE >=', $minlng);
$this->db->where('rv.LONGTITUDE <=', $maxlng);
Как получить широту и долготу без вызова API Google Maps и как оптимизировать его, чтобы получить результаты быстрее. Пожалуйста, предоставьте предложения по этому вопросу.
Если вы не пытаетесь определить адреса улиц и заинтересованы только в отдельных географических названиях, таких как города, достопримечательности и т. Д. (В вашем примере, Нью-Йорк, США), вы можете изучить различные GeoNames экспортируемые. Вы можете загрузить их в локальное хранилище данных и выполнить поиск по имени.
Других решений пока нет …