获取附近的城市值(HTML5地理位置和Google Maps API)

时间:2014-02-11 19:54:21

标签: html5 api google-maps geolocation

好的,所以我建立了一个网站,访问者可以通过从下拉菜单中选择一个城市和州来浏览锦标赛。

我希望浏览器检测访问者的城市和州,并在首次访问该网站时将其作为默认值放置在下拉列表中,从而最初显示该城市的锦标赛。我目前正在通过HTML5的Geolocation API获取坐标,然后使用Google Maps API将其转换为城市和州。

问题是,如果访问者所在的城市没有列在下拉列表中,我希望它能找到最近的城市(来自访客的城市),并将其作为默认值使用。

我现在在许多应用和网站上看到了这一点,我可以使用我正在使用的当前工具(HTML5 / Google API)来完成这项工作,还是我将不得不切换到其他技术?

当前的JS,忽略“alert(...”

// Get the visitors location byt latitude and longitude, and then by city and state.
function getLocation() {
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
}
else {
    alert("Geolocation is not supported for this browser.")
}
}
function showPosition(position) {
var visitorLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
var geocoder = new google.maps.Geocoder(); 
geocoder.geocode({ 'latLng': visitorLocation },
    function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            if (results[0]) {
                var city, state;
                for (var i = 0; i < results[0].address_components.length; i++) {
                    var addr = results[0].address_components[i];
                    if (addr.types[0] == ['administrative_area_level_1'])
                        // State
                        state = addr.short_name;
                    else if (addr.types[0] == ['locality'])
                        // City
                        city = addr.long_name;
                }
                alert(city + ", " + state);
            }
        }
    }
);
}
getLocation();

0 个答案:

没有答案