私はCodeigniter PHP + jQueryで、雇用主が場所を入力し、Google Maps APIを使用してそれをプロットするジョブボードに取り組んでいます。これは素晴らしい使いやすさの結果をもたらしましたが、問題はこれらの場所を、混乱していて視覚的に識別しにくい求職者に表示してみてください(「02905、2マイル離れた」、「171 John St.、4マイル離れた」、「プロビデンス、RI、10マイル離れた」のように読みます。 。
経度/緯度から設定されたレベル(理想的には都市名)にジオロケートを逆にして、検索結果に「プロビデンス、ロードアイランド、10マイル離れた」のように場所を表示できるようにしたいです。ロードアイランド州プロビデンス、5マイル離れたところ」、「ロードアイランド州クランストン、16マイル離れたところ」。
ジオコードを都市に逆ジオコーディングする方法はありますか?ジオコードを最も近いアドレス可能な場所に逆ジオコーディングする方法の例はたくさんありますが、レベルを制御する方法はありません。
それが明確であることを願っています!説明が必要な質問があれば、遠慮なくコメントしてください。
逆ジオコーディング をサポートするGoogle Geocoderは、 address_components を返します。都市名だけが必要な場合は、locality
とpolitical
でタグ付けされたアドレスのコンポーネントを引き出す必要があります。状態も必要な場合は、administrative_area_level_1
でタグ付けされます
無料のソース(例:クリエイティブ・コモンズ)
Geonames
無料の(自由としての)ソースを探している場合は、Geonames APIfindNearbyPlaceNameを使用できます。
たとえば、次は最も近い地名を返します。
http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo
詳細については、こちらをご覧ください
http://www.geonames.org/export/web-services.html#findNearbyPlaceName
フリーベース
単一の点の代わりに、境界ボックスを取ります。通話サンプル:
Geocoder.ca
北米の住所の逆ジオコーディング。
マップクエストAPI
Open Street Mapノミナティムサービスの使用:
http://open.mapquestapi.com/nominatim/v1/search?q=50.4,30.4&format=json
無料のソースではありません
Yahoo PlaceFinder
ドキュメント http://developer.yahoo.com/geo/placefinder/
サンプルコール:
http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R&appid= [yourappidhere]
Google Maps API
ドキュメンテーション:
http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding
完全な住所を入力してから、番地と番地を削除するだけではいけませんか?
より正確な距離を取得するには、完全な住所を使用する方が価値があると思います(都市、州のみを表示する場合でも)。
編集:そのように行う場合は、少なくとも標準形式で返される必要があります。これにより、必要なデータを簡単に正規表現できます。
Lat/longをcityに変換するAPIを探していました。これもこのスレッドの元の質問だったようです。
別のstackoverflowスレッドで共有されているデータ " http://download.geonames.org/export/dump/ "を見ました 緯度/経度の座標を考えると、どのようにして都市を見つけることができますか?/country? 、そして私自身のWebサービスを実装しました。
http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9 で実行されていることがわかります。場所の緯度と経度を変更するだけです。
OpenShift(RedHat Platform)にデプロイされます。長いアイドル期間後の最初の呼び出しには時間がかかる場合がありますが、通常はパフォーマンスは十分です。このサービスをお好きなようにご利用ください...
また、プロジェクトのソースは https://github.com/turgos/Location にあります。
逆ジオコーディングサービス(Google、Yahoo、GeoNamesなど)は、いくつかの注意点がありますが、この目的にはうまく機能します。
私は、いくつかの商用地理Web APIを提供するWebサイトを運営しており、それらのAPIをサポートするために構築したJavaライブラリを販売しています。そのうちの1つ(米国のみを対象)は適切なものを使用しています。クエリポイントを含む結果を返すための米国の都市と町の多角形マップ。正確で高速なので、これがシステムのミッションクリティカルなコンポーネントである場合は、次のWebサイトを参照することをお勧めします。
緯度/経度から都市を検索するのに固有のページは次のとおりです。
Html5ジオロケーションにはユーザー権限が必要です。この動作を望まない場合は、 https://geoip-db.com のような外部プロバイダーを利用できます。 IPアドレスに基づいた無料のジオロケーションサービスを提供しています。
この例を試してください:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Geo City Locator</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body >
<div>Country: <span id="country"></span></div>
<div>State: <span id="state"></spa></div>
<div>City: <span id="city"></span></div>
<div>Latitude: <span id="latitude"></span></div>
<div>Longitude: <span id="longitude"></span></div>
<div>IP: <span id="ip"></span></div>
<script>
$.getJSON('https://geoip-db.com/json/geoip.php?jsonp=?')
.done (function(location) {
$('#country').html(location.country_name);
$('#state').html(location.state);
$('#city').html(location.city);
$('#latitude').html(location.latitude);
$('#longitude').html(location.longitude);
$('#ip').html(location.IPv4);
});
</script>
</body>
</html>