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

2019-07-17 21:14发布

有没有办法找到只使用jQuery的网站上的客户端的位置。 例如,如果用户来到我的地盘,我怎么会了解他们的大概位置只是使用jQuery。 例如,如果用户从加州旧金山来到这将有一些类型的标识符,让我知道用户来自旧金山CA. 我不会真的需要他们的确切位置就在县城或起源的大致区域。

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

谢谢

Answer 1:

To get the client IP address & country name in jQuery:

$.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);   
});

$.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");
<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>



Answer 2:

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

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

下面是还会打印出完整的响应信息的更详细的jsfiddle例子,所以你可以看到所有可用的细节: http://jsfiddle.net/zK5FN/2/



Answer 3:

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

然后,您可以反向地理编码的位置获得一个地址,有几个免费的反向地理编码比谷歌的API等服务。

不过,如果你并不需要的准确位置,如果你希望所有用户采取功能(无论浏览器)的优势,如果你不想询问他们是否允许你的网站有自己的位置,我会建议使用您的用户的IP,以获得位置 。



Answer 4:

我创建了ipdata.co API提供了坚实的解决方案,这一点,看看下面拨弄玩耍。 它返回许多有用的数据点,例如 - 位置:国家(名称和代码),区域,城市等,电子商务 - CURRENCY_CODE,货币符号,时区,移动运营商数据,并将其检测的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"); 
 <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> 

看到小提琴在https://jsfiddle.net/ipdata/6wtf0q4g/922/



Answer 5:

**jQuery(document).ready(function($) {
    jQuery.getScript('http://www.geoplugin.net/javascript.gp', function()
{
    var country = geoplugin_countryName();
    var zone = geoplugin_region();
    var district = geoplugin_city();
    console.log("Your location is: " + country + ", " + zone + ", " + district);
});
});
<script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function($) {
    alert("Your location is: " + geoplugin_countryName() + ", " + geoplugin_region() + ", " + geoplugin_city());
});
</script>
/*--------------------------------detailed function list not necessarily to be included---------
function geoplugin_city() { return 'Dobroyd Point';}
function geoplugin_region() { return 'New South Wales';}
function geoplugin_regionCode() { return '02';}
function geoplugin_regionName() { return 'New South Wales';}
function geoplugin_areaCode() { return '0';}
function geoplugin_dmaCode() { return '0';}
function geoplugin_countryCode() { return 'AU';}
function geoplugin_countryName() { return 'Australia';}
function geoplugin_continentCode() { return 'OC';}
function geoplugin_latitude() { return '-33.873600';}
function geoplugin_longitude() { return '151.144699';}
function geoplugin_currencyCode() { return 'AUD';}
function geoplugin_currencySymbol() { return '&amp;#36;';}
function geoplugin_currencyConverter(amt, symbol) {
    if (!amt) { return false; }
    var converted = amt * 0.9587170632;
    if (converted &lt;0) { return false; }
    if (symbol === false) { return Math.round(converted * 100)/100; }
    else { return '&amp;#36;'+(Math.round(converted * 100)/100);}
    return false;
} 
*/
//----------------example-----------------------//
<html>
 <head>
  <script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>
 </head>
 <body>
  <script language="Javascript">
    document.write("Welcome to our visitors from "+geoplugin_city()+", "+geoplugin_countryName());
  </script>
 </body>
</html>


Answer 6:

任何客户端的选择是不是一个好主意,因为它们是由计算机根据周围的无线网络提供。 我敢打赌,90%的台式机用户不具备此功能激活。 当你到希望您的位置的网站,你必须点击一个按钮同意。 如果他们刚刚在您的网站,那么他们首先要知道为什么你需要他们的位置。

一个好方法是向他们展示一个页面为什么你需要自己的位置告知他们,你将永远不会将其用于任何其他目的,而不是指定的一个,而且位置也不会被保存在数据库中。

如果是运行服务器端的脚本,再有就是从客户机到服务器的连接。 在这种情况下,服务器必须知道IP地址。 还有一招,你可以做第一个获得IP地址。

让你的服务器上的PHP脚本,将返回唯一的IP地址。 由于jQuery是本地处理,当连接到服务器的,客户端IP地址将被披露。 这将需要一些额外的时间来进行必要的连接,但很快的IP地址将在jQuery中可用。

然后,你可以调用jQuery的槽的外部API,它会给你一个特定的IP地址信息。 要么你买了一个IP数据库和您websserver安装它,这样你可以调用它,无论你使用其他API。 您可以检查http://www.ipgp.net/ip-address-geolocation-api/



Answer 7:

这是可能的https://ip-api.io地理位置API。 它提供了国家,城市,邮编,坐标,网络,ASN,时区。 例如使用jQuery:

$(document).ready( function() {
    $.getJSON("http://ip-api.io/api/json",
        function(data){
            console.log(data);
        }
    );
});

此外https://ip-api.io检查TOR,公共代理和垃圾邮件发送者数据库,并提供此信息也是如此。

示例响应:

{
  "ip": "182.35.213.213",
  "country_code": "US",
  "country_name": "United States",
  "region_code": "CA",
  "region_name": "California",
  "city": "San Francisco",
  "zip_code": "94107",
  "time_zone": "America/Los_Angeles",
  "latitude": 32.7697,
  "longitude": -102.3933,
  "suspicious_factors": {
    "is_proxy": true,
    "is_tor_node": true,
    "is_spam": true,
    "is_suspicious": true // true if any of other fields (is_proxy, is_tor_node, is_spam) is true
  }
}


文章来源: Find user location using jQuery/JS (without google geolocation api)?