如何确定用户是在城市内还是在城市附近。我的意思是在50英里以内。
这在HTML5 Geo-location中是可能的吗?如果是这样的话,我如何使用它使它与一个开关语句一起工作。
或者因为它可以在50英里以内,我是否需要使用一系列的if,否则,如果和其他?
例如
switch(location){
case 'San Francisco':然后我就可以做些js了。
我将非常感谢任何帮助,因为我不知道从哪里开始。
发布于 2014-03-28 07:38:21
有不同的方法来获得您想要的东西,有些方法比其他方法更复杂,我将给您简单的,或者至少是我能想到的最简单的方法(甚至认为我花了一段时间来编写它:/)。您可以使用位于旧金山附近的数组,获取用户所在城市的名称,并与该数组进行比较。
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映射API返回一个具有不同地址精度的数组,所以理想情况下,您应该循环并确认每一个地址,我将留给您。我希望这能解决你的问题,或者至少帮你解决问题,祝你好运
jsfiddle Demo
编辑:删除硬编码坐标并将它们作为注释,因此代码应该立即工作,不需要取消注释,除非您想要测试SF,并且您不在其中。
https://stackoverflow.com/questions/22702700
复制相似问题