ホームページ >バックエンド開発 >PHPチュートリアル >どこにいるの?ジオコーダーPHPを使用したジオロケーションの実装
GeoCoder PHPは、ジオコーディングタスクを簡素化するための抽象化レイヤーを提供します。 ライブラリのアーキテクチャはモジュール式で、リクエストを処理するためのHTTPADAPTER、多様なジオコーディングプロバイダー、および出力管理用のフォーマッタ/ダンパーで構成されています。
主要な機能:
多様なジオロケーションサービス用の合理化された抽象化レイヤーを提供します。
HTTPADAPTER、複数のプロバイダー、およびフォーマッタ/ダンパーを使用したに追加します 代わりに、GeoCoder PHP Webサイトからアーカイブをダウンロードしてください
ジオコーディングアドレス:composer.json
<code class="language-json">{ "require": { "willdurand/geocoder": "@stable" } }</code>ジオコーディングには、通常、アドレス(路上住所、近隣など)を地理的座標に変換することが含まれます。 結果の精度は、ジオコーダーの品質に依存します
GeoCoderは、Webサービスと対話するためにHTTPadapterを必要とします。 いくつかが含まれています(Curl、Socket)、他の人のサポート(Buzz、Guzzle、Zend HTTP、GeoIP2)が別々のプロジェクト統合を必要とします。 サポートされているジオコーダーは多数あり、分類されています
地理的コーダー:Googleマップ、OpenStreetMap、Bing Maps、MapQuestなど。
IPジオコーダー:
FreeGeoip、Hostip、IPINFODBなど多くは無料で、一部はAPIキーを必要とし、使用制限があります(たとえば、Googleの2500リクエスト/日)。 ジオコーダーの品質は異なります。特定の地域で優れている人もいます 例(Google Maps):
を使用してロケール固有の結果をサポートしています。 たとえば、ロシアのロケールの使用:
ジオコーダーのチェーン:
<code class="language-php">$address = 'Laan van Meerdervoort, Den Haag, Nederland'; $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter(); $geocoder = new \Geocoder\Geocoder(); $geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter)); $result = $geocoder->geocode($address);</code>最適な結果については、複数のジオコーダーをチェーンします。 GeoCoderは、最初の成功した結果を返します:
$result
リバースジオコーディング:
逆ジオコディングは、座標(緯度、経度)をアドレスに変換します。 順序を覚えておいてください:緯度、そして経度。
<code class="language-json">{ "require": { "willdurand/geocoder": "@stable" } }</code>
Geocoding IPアドレス:
ジオコーディングIPアドレス(例:$_SERVER['REMOTE_ADDR']
から)は簡単です:
<code class="language-php">$address = 'Laan van Meerdervoort, Den Haag, Nederland'; $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter(); $geocoder = new \Geocoder\Geocoder(); $geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter)); $result = $geocoder->geocode($address);</code>
IPジオコーディングの結果は、しばしば詳細ではないことが多いことに注意してください(多くの場合は国のみ)。
エラー処理:
常にブロックを使用して、潜在的な例外を処理します:try...catch
<code class="language-php">$geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter, 'Ru')); $result = $geocoder->geocode('Laan van Medevoort 7, Den Haag, Nederland');</code>
出力フォーマット:
GeoCoderは、フォーマッタ(文字列ベース)とダンパー(Geojson、KML、GPX、WKB、WKTなどの言語固有の出力)を提供しています。
<code class="language-php">$chain = new \Geocoder\Provider\ChainProvider([ new \Geocoder\Provider\OpenStreetMapProvider($adapter), new \Geocoder\Provider\GoogleMapsProvider($adapter), new \Geocoder\Provider\BingMapsProvider($adapter, $bingApiKey), ]); $geocoder->registerProvider($chain);</code>結論:
Geocoder PHPは、十分に構造化された使いやすいライブラリです。 強力ですが、潜在的な改善には、信頼レベルやアドレスエラーマージンなどの基準に基づいた高度な結果フィルタリングが含まれます。 これにより、チェーンジオコーダーの可能性が最大限に活用されます
以上がどこにいるの?ジオコーダーPHPを使用したジオロケーションの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。