确定是否在城市内或附近

时间:2014-03-28 01:49:06

标签: javascript jquery html5 google-maps google-maps-api-3

如何确定用户是在城市内还是附近。我的意思是在50英里内。

这是否可以使用HTML5地理位置,如果是这样,我该如何使用它以便它适用于switch语句。

或者因为它可以在50英里以内,我是否必须使用一系列if,否则if,and else?

例如

switch(location){
    case 'San Francisco':

然后我可以运行一些js。

我非常感谢任何帮助,因为我不知道从哪里开始。

1 个答案:

答案 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会返回一个具有不同精度级别的数组。地址,理想情况下你应该循环并确认每一个,我会把它留给你。我希望这能解决你的问题或至少帮助你,祝你好运=)

jsfiddle Demo

编辑:删除了硬编码坐标并将其作为注释放置,因此代码应立即生效,无需取消注释,除非您要测试SF并且您不在那里。