2017-02-14 7 views
1

私は同型のアプリケーションをサーバとクライアントにも持っています。私の懸念はサーバー上のアプリケーションの結果をロードすることです私はgoogle maps apiサービスを呼ぶ必要があります。ex 'www.mysite.com/search/New-York--NY--United-States'の場所の緯度と経度を取得します。その後、私はPHPで以下のコードでGoogle Maps APIのからその緯度と経度を見つける必要があり、私は以下のように私の結果を検索し、この緯度と経度に基づいて、そしてサーバ上の同形アプリケーション内の場所の緯度と経度を取得する方法

$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']; 
      } 

(私のAPIはPHPである)

$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); 

google maps apiを呼び出さずに緯度と経度を取得する方法と、結果を高速に取得するために最適化する方法。この質問に関する提案を提出してください。

答えて

0

住所を固定しないようにしようとしていて、都市、ランドマークなどの個別の場所の名前のみに興味がある場合は、さまざまなGeoNames exportablesを調べることができます。それらをローカル・データストアにロードし、名前でルックアップを実行できます。

+0

Googleマップよりも速く、すべての更新された都市が含まれますか? –

+0

@AakashJohn "更新されたすべての都市"が何を意味するのかはっきりしていませんが、世界的な場所の完全な一覧です。私が言うことができるのは、それが場所を持たないかもしれないと思って、それがエントリを持っているかどうかを見ていくつかのエッジの場合はそれをチェックアウトです。 ローカルデータストアにクエリを実行している場合、Googleへのコールに潜在的なネットワーク遅延はなく、移動するデータストアの種類によっては、高速クエリ(インデックス、シャーディングなどをソリューションに応じて使用) – arpieb

+0

一般的なランドマークはその本質によってあまり動き回らない傾向があるため、最も人気のある場所の高速リターンメモリ内キャッシュを作成する可能性もあります。 :) – arpieb

関連する問題