好的,所以我建立了一个网站,访问者可以通过从下拉菜单中选择一个城市和州来浏览锦标赛。
我希望浏览器检测访问者的城市和州,并在首次访问该网站时将其作为默认值放置在下拉列表中,从而最初显示该城市的锦标赛。我目前正在通过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();