通过地理位置获取用户的状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过地理位置获取用户的状态相关的知识,希望对你有一定的参考价值。

获得美国用户状态的最有效方法是什么? html5地理位置是一个选项,而不需要涉及谷歌地图?

答案

这里有几个javascript和JSON的例子(在jQuery的帮助下)使用IP查找方法(在IPinfoDB的帮助下)和Geolocation API方法(在Google Maps APIYQL的帮助下)。

在这两个示例中,我正在检索区域和国家/地区,但您可以选择多个值。请注意,这些示例不进行任何错误处理,为简洁起见,这里编辑它们,否则请参阅the full demo

JavaScript中的IP查找

这种方法很好,因为它易于实现,并且在国家层面上相当准确,但对于任何更具体的内容,准确度会大幅下降。

// API key excluded for brevity, see full demo.
var apiurl = 'http://api.ipinfodb.com/v3/ip-city';
$.getJSON(apiurl+'/format=json&callback=?',
    function(data){
        $("h3#location").html(data.regionName + ", " + data.countryName);
    }
);

地理位置API

虽然绝不是完美的,但这种方法准确无误。系统会提示用户共享可能会减少使用量的地理位置详细信息。

navigator.geolocation.getCurrentPosition(function(pos){
    $.getJSON(apiurl+'/format=json&callback=?',
        function(data){
            var regionName = data[...]AdministrativeAreaName;
            var countryName = data[...]CountryName;
            $("h3#location").html(regionName + ", " + countryName);
        }
    );
});

在那里,你会看到我通过Google Maps API v3使用YQL,以便可以进行JSON回调。

完整演示:http://jsfiddle.net/ZjXXh

另一答案

如果网站需要确切的位置来显示本地数据,餐馆,商店等,新的浏览器地理定位功能非常好。但是,如果您在笔记本电脑上运行它,它将尝试根据附近可用的无线网络估算位置,所以它可能只有几公里,这意味着它可以得到的最准确的是城镇级别。

对于网站开发人员,如果您依赖于此,您必须首先知道,用户必须接受为您的网站提供位置。大多数人看不到,其他人忽略了该消息,以及当用户使用不支持此功能的Internet Explorer或旧浏览器时,或者如果他没有打开计算机上的Wi-Fi,您会执行的操作。认为在大多数情况下你会得到一个大约2公里的位置,那么在大多数情况下你会考虑城镇级的准确性,这不过是知识产权所能给你的地理位置。

通过IP进行地理定位的优点是:*您不必担心用户拥有过时的浏览器*您不必担心用户会害怕共享其位置的请求。他不知道这个位置不是他的确切位置,而是近似的位置。 *用户不会收到通知您正在使用他的计算机来跟踪位置的通知。 *它适用于没有Wi-Fi的电脑。

我认为实现这一目标的理想方法是将两个系统都安装到位。询问用户该位置,但如果浏览器已过时或用户未提供该位置,则切换到从IP获取位置。要从IP获取位置,您可以在此处使用IPGP API:http://www.ipgp.net/developer-tools/

另一答案

我不确定它是否更有效,但另一种选择是通过IP定位。它可能是不正确的,只有大致的位置。

另一答案

假设您已经从Geolocation回调中获得了纬度和经度,您需要的是反向地理编码。 (地理编码意味着按地址查找纬度和经度,因此反向地理编码的作用很明显。)

Google的地理编码(以及反向地理编码)服务是免费的。你可以在这里阅读API:http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding

请务必在使用之前申请Google Maps API密钥。

另一答案

是的,与gmaps相比,地理定位是最有效的方式,如果你真的坐下来比较速度和开销(对于你/你的服务器我的意思),因为浏览器会给你。 Gmaps需要有关其API的知识才能使用它。但地理定位更容易。一篇文章here清楚地描述了地理位置。以下是从该网站获取的代码,非常简单

navigator.geolocation.getCurrentPosition(show_map);
function show_map(position) {
  var latitude = position.coords.latitude;
  var longitude = position.coords.longitude;
  // let's show a map or do something interesting!
}
另一答案

使用第三方API,例如ipdata.co

这个答案使用的“测试”API密钥非常有限,仅用于测试几个调用。 Signup为您自己的免费API密钥,每天最多可获得1500个请求以进行开发。

$.get("https://api.ipdata.co/74.125.230.195?api-key=test", function(data, status){
    console.log(data.region);
});

以上是关于通过地理位置获取用户的状态的主要内容,如果未能解决你的问题,请参考以下文章

通过地理位置获取用户的状态

使用地理位置获取用户的状态

VSCode自定义代码片段13——Vue的状态大管家

VSCode自定义代码片段13——Vue的状态大管家

VSCode自定义代码片段13——Vue的状态大管家

如何使用 TabLayout 在 ViewPager 中的 Google 地图片段中获取当前位置