特定のポイントが位置する領土の国の名前を取得する簡単な方法はありますか?
私は、政治的論争によってもたらされる正確さやあいまいさについてはあまり気にしません。十分な近似が必要です。
特定のポイントが位置する領土の国の名前を取得する簡単な方法はありますか?
私は、政治的論争によってもたらされる正確さやあいまいさについてはあまり気にしません。十分な近似が必要です。
編集: Yahoo Where API は利用できなくなりました。
Yahoo! API。
緯度と経度
location パラメータには緯度と経度を指定できます。緯度と経度は、10 進数の度または度 - 分 - 秒で表すことができ、先頭または末尾に方向または先頭の記号を付けます。ルート案内が提供されている場合、緯度の前に経度が表示されることがあります。方向が指定されていない場合、緯度が -90 から 90 の範囲外であれば、経度が緯度の前に表示されることがあります。それ以外の場合は、緯度を最初に表示する必要があります。句読点 (カンマ、度、分、秒) は無視されます。
Examples:
•50.3 -120.5
•50.3, -120.5
•-120.5 50.3
•50.3 N 120.5 W
•120.5 W 50.3 N
•50 18 0 -120 30 0
•50 18 0 N 120 30 0 W
•50° 18' 0" N 120° 30' 0" W
response 要素は、国や他の多くの要素を提供します。
逆ジオコーディングを行うために、パラメーター gflags=R として送信することを忘れないでください。json での出力が必要な場合は、パラメーター flags=J も送信します。
参考までに、geonames.org にも優れた Web サービスがありますが、速度が制限されています (これは、大量の座標を検索する必要があったため、私の場合は問題でした)。
例: http://ws.geonames.org/findNearbyPlaceName?lat=47.3&lng=9
Google のリバース ジオ エンコーディングサービスを使用してみませんか?
tinygeocoder のサービスも参照できます。
もう 1 つの方法は、自然の地球 (または別のソース) から国の地図をダウンロードすることです。Geotools を使用すると、その地点がいずれかの国の内部にあるかどうかを検索できます。
緯度と経度の座標から国の名前を取得する JavaScript コードを次に示します。
Google のジオコーディング サービス[jsfiddle]の使用:
var lookupCountryWithGoogle = function(lat, lng) { var latlng = new google.maps.LatLng(lat, lng);
var geoCoder = new google.maps.Geocoder();
geoCoder.geocode({
location: latlng
}, function(results, statusCode) {
var lastResult = results.slice(-1)[0];
if (statusCode == 'OK' && lastResult && 'address_components' in lastResult) {
alert('coordinates: ' + lat + ', ' + lng + '\n' + 'country: ' + lastResult.address_components.slice(-1)[0].long_name);
} else {
alert('coordinates: ' + lat + ', ' + lng + '\n' + 'failed: ' + statusCode);
}
});
};
lookupCountryWithGoogle(43.7534932, 28.5743187); // lookupCountryWithGoogle(142, 124); は成功します。// 失敗します
(このための Google の JavaScript サポートを などの URL からロードする必要がありますmaps.google.com/maps/api/js?sensor=false&fake=.js
) 。
[jsfiddle] の使用:ws.geonames.org
var lookupCountryWithGeonames = function(lat, lng) {
$.getJSON('http://ws.geonames.org/countryCode', {
lat: lat,
lng: lng,
type: 'JSON'
}, function(results) {
if (results.countryCode) {
alert('coordinates: ' + lat + ', ' + lng + '\n' + 'country: ' + results.countryName);
} else {
alert('coordinates: ' + lat + ', ' + lng + '\n' + 'failed: ' + results.status.value + ' ' + results.status.message);
}
});
};
lookupCountryWithGeonames(43.7534932, 28.5743187); // 成功します
lookupCountryWithGeonames(142, 124); // 失敗します</p>