使用jQuery/JS(没有谷歌地理定位API)查找用户位置?

use*_*249 29 javascript jquery unobtrusive-javascript

有没有办法只使用jQuery在网站上找到客户位置.例如,如果用户访问我的网站,我怎么能找到他们的大概位置只是使用jQuery.例如,如果用户来自旧金山CA,则会有一些类型标识符让我知道用户来自旧金山CA. 我真的不需要他们的确切位置只是县或一般的原产地.

编辑:如何生成http://flourishworks-webutils.appspot.com/req上的信息?

谢谢

Dur*_*dey 40

要在jQuery中获取客户端IP地址和国家/地区名称:

$.getJSON("http://freegeoip.net/json/", function(data) {
    var country_code = data.country_code;
    var country = data.country_name;
    var ip = data.ip;
    var time_zone = data.time_zone;
    var latitude = data.latitude;
    var longitude = data.longitude;

    alert("Country Code: " + country_code);
    alert("Country Name: " + country);
    alert("IP: " + ip); 
    alert("Time Zone: " + time_zone);
    alert("Latitude: " + latitude);
    alert("Longitude: " + longitude);   
});
Run Code Online (Sandbox Code Playgroud)

$.get("http://freegeoip.net/json/", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#address").html("Location: " + response.city + ", " + response.region_name);
    $("#details").html(JSON.stringify(response, null, 4));
}, "jsonp");
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h3>Client side IP geolocation using <a href="http://freegeoip.net">freegeoip.net</a></h3>

<hr/>
<div id="ip"></div>
<div id="address"></div>
<hr/>Full response: <pre id="details"></pre>
Run Code Online (Sandbox Code Playgroud)


Ben*_*ing 24

您可以使用支持JSONP的Web服务,例如我的服务http://ipinfo.io.它将为您提供客户端的IP地址,主机名,地理位置信息和网络所有者.以下是jQuery的一个实例:

$.get("http://ipinfo.io", function(response) {
    $("#ip").html(response.ip);
    $("#address").html(response.city + ", " + response.region);
}, "jsonp");
Run Code Online (Sandbox Code Playgroud)

这是一个更详细的JSFiddle示例,它还打印出完整的响应信息,因此您可以看到所有可用的详细信息:http://jsfiddle.net/zK5FN/2/

  • 这有效,但如果每天有超过1,000个API请求,则会出现问题.如果您需要提出更多要求,则需要付费. (3认同)

Jul*_*ien 13

HTML5地理位置API可以让你获得一些JavaScript的用户的纬度/经度(如果浏览器兼容,如果用户允许他/她的位置访问).

然后,您可以对位置进行反向地理编码以获取地址,除了Google的API之外,还有几种免费的反向地理编码服务.

但是,如果您不需要准确的位置,并且您希望所有用户都能利用该功能(无论是否使用浏览器),并且您不想询问他们是否允许您的网站拥有自己的位置,我建议使用您的用户的IP来获取位置.


Jon*_*han 7

我创建了ipdata.co API来为此提供可靠的解决方案,请参阅下面的小提琴.它返回许多有用的数据点,例如 - 位置:国家(名称和代码),地区,城市等,电子商务 - 货币代码,货币符号,时区,移动运营商数据,它检测IP地址是代理还是Tor用户.

Ipdata有10个全局端点,每个端点每秒能够处理> 10,000个请求.

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

$.get("https://api.ipdata.co?api-key=test", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#city").html(response.city + ", " + response.region);
    $("#response").html(JSON.stringify(response, null, 4));
}, "jsonp");
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1><a href="https://ipdata.co">ipdata.co</a> - IP geolocation API</h1>

<div id="ip"></div>
<div id="city"></div>
<pre id="response"></pre>
Run Code Online (Sandbox Code Playgroud)

请参阅https://jsfiddle.net/ipdata/6wtf0q4g/922/上的小提琴