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

问题描述

| 获取美国用户所在州的最有效方法是什么? HTML5地理位置是一种无需涉及Google地图的选项吗?     

解决方法

        这是使用IP查找方法(借助IPinfoDB)和Geolocation API方法(借助Google Maps API和YQL)的JavaScript和JSON(借助jQuery)的两个示例。 在两个示例中,我都在检索地区和国家/地区,但是您可以选择几个值。请注意,这些示例不执行任何错误处理,此处为简洁起见对其进行了编辑,否则请查看完整的演示。 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);
        }
    );
});
在其中,您会看到我通过YQL使用了Google Maps API v3,从而可以进行JSON回调。 完整演示:http://jsfiddle.net/ZjXXh     ,        如果网站需要确切的位置来显示本地数据,餐厅,商店等,则新的浏览器地理位置功能非常好。但是,如果您在笔记本电脑上运行该网站,它将尝试根据附近可用的无线网络来估算位置,因此可能相距几公里,这意味着它可以获得的最准确的信息是镇级信息。 对于网站开发人员,如果您依靠它,则必须首先知道,用户必须接受才能为您的网站提供位置。大多数人看不到,其他人则忽略该消息,以及当用户拥有不支持此功能的Internet Explorer或较旧的浏览器或者未打开Wi-Fi时该怎么办。认为在大多数情况下,您将获得大约2km的位置,然后在大多数情况下,您将需要获得镇级的精度,这仅是IP地理位置所能提供的。 通过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密钥之前,请先申请。     ,        是的,如果您真正坐下来比较浏览器给您的速度和开销(对于您/您的服务器而言),则与gmap相比,地理位置定位是最有效的方法。 Gmaps需要有关其API的知识,然后才能使用它。但是地理位置更容易。这里的一篇文章清楚地描述了有关地理位置的信息。这是从该站点获取的一段代码,非常简单
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   该答案使用一个非常有限的\'test \'API密钥,仅用于测试一些调用。注册您自己的免费API密钥,每天最多可获得1500个开发请求。
$.get(\"https://api.ipdata.co/74.125.230.195?api-key=test\",function(data,status){
    console.log(data.region);
});
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...