Учитывая координаты широты / долготы, как мы можем узнать город / страну? - PullRequest
127 голосов
/ 28 мая 2011

Например, если у нас есть этот набор координат

"latitude": 48.858844300000001,
"longitude": 2.2943506,

Как мы можем узнать город / страну?

Ответы [ 13 ]

0 голосов
/ 04 февраля 2019

Loc2country - это инструмент на основе Голанга, который возвращает код страны альфа-3 ISO для заданных координат местоположения (широта / долгота). Он отвечает в микросекундах. Он использует геохэш к карте страны.

Данные геохеша генерируются с использованием georaptor .

Мы используем геохэш на уровне 6 для этого инструмента, то есть ящики размером 1,2 км х 600 м.

0 голосов
/ 03 октября 2016

Если вы используете API Google Адресов, вот как вы можете получить страну и город из объекта мест с помощью Javascript:

function getCityAndCountry(location) {
  var components = {};
  for(var i = 0; i < location.address_components.length; i++) {
    components[location.address_components[i].types[0]] = location.address_components[i].long_name;
  }

  if(!components['country']) {
    console.warn('Couldn\'t extract country');
    return false;
  }

  if(components['locality']) {
    return [components['locality'], components['country']];
  } else if(components['administrative_area_level_1']) {
    return [components['administrative_area_level_1'], components['country']];
  } else {
    console.warn('Couldn\'t extract city');
    return false;
  }
}
0 голосов
/ 30 августа 2013

Пожалуйста, проверьте ответ ниже.У меня работает

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position){

        initialize(position.coords.latitude,position.coords.longitude);
    }); 
}

function initialize(lat,lng) {
    //directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);
    //directionsService = new google.maps.DirectionsService();
    var latlng = new google.maps.LatLng(lat, lng);

    //alert(latlng);
    getLocation(latlng);
}

function getLocation(latlng){

    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({'latLng': latlng}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[0]) {
                    var loc = getCountry(results);
                    alert("location is::"+loc);
                }
            }
        });

}

function getCountry(results)
{
    for (var i = 0; i < results[0].address_components.length; i++)
    {
        var shortname = results[0].address_components[i].short_name;
        var longname = results[0].address_components[i].long_name;
        var type = results[0].address_components[i].types;
        if (type.indexOf("country") != -1)
        {
            if (!isNullOrWhitespace(shortname))
            {
                return shortname;
            }
            else
            {
                return longname;
            }
        }
    }

}

function isNullOrWhitespace(text) {
    if (text == null) {
        return true;
    }
    return text.replace(/\s/gi, '').length < 1;
}
...