HTML5 - Что заставляет этот код получать страну вместо города? - PullRequest
0 голосов
/ 19 февраля 2012

Что заставляет следующий код получить страну, а не город, и как я могу изменить его, чтобы получить город вместо страны?

function get_visitor_country() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position){ 
            var lat = position.coords.latitude;
            var lon = position.coords.longitude;
            var latlng = new google.maps.LatLng(lat, lon);
            geocoder = new google.maps.Geocoder();

            geocoder.geocode({'latLng': latlng}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) { 
                    if (results[1]) {
                        var country = results[results.length-1].formatted_address;
                        $("#location-detection .location-name").html(country);
                        $("#geolocation-worked").css("display", "block");
                        $("#no-geolocation").css("display", "none");

                        $geolocation_fix.hide().css({ height : 0 });

                        init_geolocation_switch();
                    }
                }
            });
        });
    }
}

Скрипт также загружает http://maps.google.com/maps/api/js?sensor=false в конец файла, если это может повлиять на него.

1 Ответ

1 голос
/ 19 февраля 2012

Ваш сценарий в настоящее время не получает ничего особенного (например, город или страну), он получает что-то из результатов.

Для поиска города внутри результатов для записи с типами , установленными на ["locality", "political"]

Когда вы нашли его, вы получили город.


Создание объекта, помеченного addressTypes для удобного доступа:

var components={};
jQuery.each(results,function(i,v){
  components[jQuery.camelCase(v.types.join('-'))]=v;
})

//test it
alert((components.localityPolitical)
        ? components.localityPolitical.formatted_address
        : 'n/a');

См .: Типы компонентов адреса

...