web-dev-qa-db-ja.com

PHPとgoogle Maps Apiを使用して2つの郵便番号間の距離を計算する(英国))

ヘイ、私はPHPとGoogle Maps Apiを使用して2つの郵便番号間の距離を計算する方法を考えています。

誰もがアイデアや例へのリンクを得ました。

17
dotty

geographic distance を探していると仮定すると、まず、次の例のように、 Google Mapsサーバー側のジオコーディングサービス を使用して2つの郵便番号の緯度と経度を取得する必要があります。 :

$url = 'http://maps.google.com/maps/geo?q=EC3M,+UK&output=csv&sensor=false';

$data = @file_get_contents($url);

$result = explode(",", $data);

echo $result[0]; // status code
echo $result[1]; // accuracy
echo $result[2]; // latitude
echo $result[3]; // longitude

次に、次のような great-circle distance 実装を使用して、2つの郵便番号の座標間の距離を計算できます。

サーバー側のジオコーディングサービスは、Googleマップに結果を表示する場合にのみ使用できます。結果を地図上に表示せずにジオコーディングすることは Google Maps API利用規約のライセンス制限 によって禁止されています。


UPDATE:

地理的な距離ではなく、走行距離を探している場合、現時点では、サーバー側のHTTPリクエストを介してGoogle Maps Directions APIにアクセスするための文書化され承認された方法はありません。

それでも、JSON出力を返すドキュメントに記載されていないメソッドは次のとおりです。

http://maps.google.com/maps/nav?q=from:London%20to:Dover

これにより、運転ルートと合計走行距離がJSON形式で返されます:"meters":122977

qパラメータの形式はfrom:xxx%20to:yyy。 xxxとyyyをそれぞれ開始と宛先に置き換えます。完全な住所の代わりに緯度と経度の座標を使用できます。

http://maps.google.com/maps/nav?q=from:51.519894,-0.105667%20to:51.129079,1.306925

これは文書化されていないだけでなく、 Google Maps APIの利用規約 の制限10.1および10.5にも違反する可能性があることに注意してください。

また、次の関連記事をチェックしてみてください。

30
Daniel Vassallo

V3 APIが何かを変更するかどうかわからないが、私はこれをかなり長い間使用してきましたが、それでも機能します。

出発地と到着地はそれぞれ緯度、経度として表現されます(住所はおそらく機能します。私はそれを試したと確信していますが、覚えていません。とにかく座標を持っています)

$base_url = 'http://maps.googleapis.com/maps/api/directions/xml?sensor=false';
$xml = simplexml_load_file("$base_url&Origin=$from&destination=$to");
$distance = (string)$xml->route->leg->distance->text;
$duration = (string)$xml->route->leg->duration->text
4
Cuse70

ダニエルの答えに基づいて、Googleの Geocoding API を使用して、車、公共交通機関、徒歩、サイクリングの距離を簡単に取得できます。

$postcode1='W1J0DB';
$postcode2='W23UW';
$result = array();

$url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$postcode1&destinations=$postcode2&mode=bicycling&language=en-EN&sensor=false";

$data = @file_get_contents($url);

$result = json_decode($data, true);
print_r($result);

&mode = bicyclingを適切なパラメーターに置き換えてください:

  • &mode =運転
  • &mode = bicycling
  • &mode = transit
  • &mode =ウォーキング
2
Nao

こちらのメーリングリストをご覧ください。

http://groups.google.com/group/Google-Maps-API/browse_thread/thread/71e6aa2c3de66127

直線と走行距離のどちらが必要かを決めたら、簡単に計算できます。 PHPを使用する必要はありませんが、例があります。

これも見てください:

http://groups.google.com/group/google-maps-api/browse_thread/thread/d43de63d05adc62d/1a04053f39a3edf3?lnk=gst&q=calculate+distance#1a04053f39a3edf

0
Layke

Google Maps APIはJavaScriptではなく、PHPです。希望どおりの結果を得るには、2つの郵便番号をLatLang座標に変換し、関数distanceFromを使用してそれらの間の距離を求めます。

いくつかのサンプルコードについては この記事 をご覧ください。

0