如何确定用户是在城市内还是附近。我的意思是在50英里内。
这是否可以使用HTML5地理位置,如果是这样,我该如何使用它以便它适用于switch语句。
或者因为它可以在50英里以内,我是否必须使用一系列if,否则if,and else?
例如
switch(location){
case 'San Francisco':
然后我可以运行一些js。
我非常感谢任何帮助,因为我不知道从哪里开始。
答案 0 :(得分:2)
有不同的方法来获得你想要的东西,有些方法比其他方法更复杂,我会给你一个简单的,或者至少是我能想到的最简单的方法(甚至认为我花了一些时间来编码它:/)。您可以拥有一个位于旧金山附近的阵列,并获取该用户目前所在城市的名称,并与该阵列进行比较。
if("geolocation" in navigator){
var lat, lon
var locations = ['richmond', 'berkeley', 'daly city', 'oakland', 'san francisco'];
$('button').click(function(){
navigator.geolocation.getCurrentPosition(function(pos){
lat = pos.coords.latitude; // 37.789709 SF lat
lon = pos.coords.longitude; // -122.445771 SF lon
var geoAPI = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+lon+'&sensor=true';
$.getJSON(geoAPI).done(function(res){
var results = res.results;
var address = results[2].address_components;
var city = address[1].long_name.toLowerCase();
console.log(city);
if(jQuery.inArray(city, locations) !== -1){
alert('You are in San Francisco or nearby');
}
});
});
});
}
我已经对来自旧金山的lat,lon值进行了硬编码,因此您可以看到它的工作原理,只需取消注释生产的实际代码,同时请注意Google Maps API会返回一个具有不同精度级别的数组。地址,理想情况下你应该循环并确认每一个,我会把它留给你。我希望这能解决你的问题或至少帮助你,祝你好运=)
编辑:删除了硬编码坐标并将其作为注释放置,因此代码应立即生效,无需取消注释,除非您要测试SF并且您不在那里。