首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定是否在城市内或附近

确定是否在城市内或附近
EN

Stack Overflow用户
提问于 2014-03-28 01:49:06
回答 1查看 150关注 0票数 0

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

这在HTML5 Geo-location中是可能的吗?如果是这样的话,我如何使用它使它与一个开关语句一起工作。

或者因为它可以在50英里以内,我是否需要使用一系列的if,否则,如果和其他?

例如

代码语言:javascript
复制
switch(location){
    case 'San Francisco':

然后我就可以做些js了。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-28 07:38:21

有不同的方法来获得您想要的东西,有些方法比其他方法更复杂,我将给您简单的,或者至少是我能想到的最简单的方法(甚至认为我花了一段时间来编写它:/)。您可以使用位于旧金山附近的数组,获取用户所在城市的名称,并与该数组进行比较。

代码语言:javascript
复制
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,并且您不在其中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22702700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档