HTML5 - 是什么让这些代码获得国家而不是城市?

时间:2012-02-18 23:23:15

标签: html5 google-maps geolocation latitude-longitude

是什么让以下代码获得国家而不是城市,我如何更改它以获得城市而不是国家?

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 个答案:

答案 0 :(得分:1)

你的脚本目前没有任何特殊的东西(如城市或国家),它会从结果中获得一些东西。

要在类型设置为["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');

请参阅:Address Component Types