2017-02-14 12 views
1

У меня есть изоморфное приложение, которое также загружается на сервер и клиент. Я забочусь о загрузке результатов для приложения на сервере. Мне нужно позвонить в google maps api service, чтобы получить мощность и долготу для места для ex 'www.mysite.com/search/New-York--NY--United-States' то мне нужно, чтобы найти свою широту и долготу от Google Maps API с ниже кода в PHP (мой апи в 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 и как оптимизировать его, чтобы получить результаты быстрее. Просьба представить предложения по этому вопросу.

ответ

0

Если вы не пытаетесь указывать уличные адреса и интересуетесь только названиями отдельных мест, таких как города, ориентиры и т. Д. (В вашем примере, Нью-Йорк, США), вы можете посмотреть различные GeoNames exportables. Вы можете загрузить их в локальное хранилище данных и выполнить поиск по имени.

+0

Но будет ли это быстрее, чем карты Google, и включает ли он все обновленные города? –

+0

@AakashJohn не уверен, что вы подразумеваете под «всеми обновленными городами», но это очень полный список местоположений во всем мире. Все, что я могу сказать, это проверить его для некоторых случаев, когда вы думаете, что у него может не быть места и посмотреть, есть ли у него запись. Что касается скорости - если вы запрашиваете локальное хранилище данных, у вас не будет потенциальной сетевой задержки звонка в Google, и в зависимости от того, с каким хранилищем данных вы можете работать, вы можете настроить его для быстрые запросы (с использованием индексов, осколков и т. д. в зависимости от вашего решения). – arpieb

+0

Вы даже можете создать быстродействующий кеш-память в самых популярных местах, так как в целом ориентиры не склонны сильно перемещаться по самой своей природе. :) – arpieb

 Смежные вопросы

  • Нет связанных вопросов^_^