Подтвердить что ты не робот

Название страны для координат GPS

Есть ли простой способ получить название страны, на территории которой находится данный пункт?

Меня не волнует слишком много о точности или о двусмысленности, обусловленной политическими спорами. Просто нужно хорошее приближение.

4b9b3361

Ответ 1

EDIT: API Yahoo Where больше не доступен.

Попробуйте Yahoo! API.

Широта и долгота

Широта и долгота может быть указана для параметр местоположения. Широта и долгота может быть выражена как десятичная градусов или градусов-минут-секунд, с ведущим или конечным направленных или ведущих знаков. Если направленные направления, долгота может появиться перед широтой. Если направленные направления не предусмотрены, долгота может появиться до широты если он находится вне диапазона от -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

Элемент ответа предоставит вам страну, а также многие другие elements.

Не забудьте отправить параметр gflags = R, чтобы сделать обратное геокодирование. Если вы хотите получить результат в json, отправьте флаги параметров = J.

Ответ 3

Просто для справки, geonames.org также имеет приятный веб-сервис, но он ограничен (это было проблемой в моем случае, так как мне приходилось искать большую партию координат).

Пример: http://ws.geonames.org/findNearbyPlaceName?lat=47.3&lng=9

Ответ 4

Вот код 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)


  • Использование ws.geonames.org [jsfiddle]:

    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);//не удастся

Ответ 5

Вы также можете посмотреть службы от tinygeocoder.

Другой вариант - загрузить карты страны с естественной земли (или другого источника). Используя Geotools, вы можете найти, находится ли точка внутри одной из стран.