Javascript 如何获得访客';s位置(即国家)是否使用地理位置?
我正在尝试扩展本地地理定位功能Javascript 如何获得访客';s位置(即国家)是否使用地理位置?,javascript,geolocation,Javascript,Geolocation,我正在尝试扩展本地地理定位功能 if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(函数(位置){ 变量纬度=位置坐标纬度; var经度=position.coords.longitude; }); } 这样我就可以使用访问者的国家名称(可能返回一个信息数组) 到目前为止,我所能找到的都是显示谷歌地图界面的函数,但没有一个函数真正满足了我的需求,除了那些运行良好但由于某种原因无法在我的计算机上运行的函数。我不知
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(函数(位置){
变量纬度=位置坐标纬度;
var经度=position.coords.longitude;
});
}
这样我就可以使用访问者的国家名称(可能返回一个信息数组)
到目前为止,我所能找到的都是显示谷歌地图界面的函数,但没有一个函数真正满足了我的需求,除了那些运行良好但由于某种原因无法在我的计算机上运行的函数。我不知道为什么那里出了问题
无论如何,你知道我如何简单地从纬度和经度值返回一个包含国家、城市等信息的数组吗?如果你只需要用户的国家,你不需要定位用户。您可以在任何IP到位置服务(如、或)中查找他们的IP地址。这在大多数情况下都是准确的
如果您确实需要获取他们的位置,您可以使用该方法获取他们的lat/lng,然后查询或反向地理编码服务。一个非常易于使用的服务由
ws.geonames.org
提供。下面是一个示例URL:
http://ws.geonames.org/countryCode?lat=43.7534932&lng=28.5743187&type=JSON
下面是我添加到您的代码中的一些(jQuery)代码:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
$.getJSON('http://ws.geonames.org/countryCode', {
lat: position.coords.latitude,
lng: position.coords.longitude,
type: 'JSON'
}, function(result) {
alert('Country: ' + result.countryName + '\n' + 'Code: ' + result.countryCode);
});
});
}
您可以使用我的服务,为此。它将为您提供客户端IP、主机名、地理位置信息(城市、地区、国家、区号、邮政编码等)和网络所有者。下面是一个记录城市和国家的简单示例:
$.get("https://ipinfo.io", function(response) {
console.log(response.city, response.country);
}, "jsonp");
下面是一个更详细的JSFIDLE示例,它还打印出完整的响应信息,因此您可以看到所有可用的详细信息:
位置通常不如本地地理位置详细信息准确,但不需要任何用户许可。您可以使用IP地址获取您的“国家”、“城市”、“isp”等信息。
只需使用其中一个web服务,它为您提供了一个简单的api,例如,它为您提供了一个JSON服务。简单地发送一个Ajax(或Xhr)请求,然后解析JSON以获取所需的任何数据
var requestUrl = "http://ip-api.com/json";
$.ajax({
url: requestUrl,
type: 'GET',
success: function(json)
{
console.log("My country is: " + json.country);
},
error: function(err)
{
console.log("Request failed, error= " + err);
}
});
提供免费且易于使用的服务(称为)。这是一个JSONP服务,需要使用HTML进行简单的javascript编码。它也可以在JQuery中使用。我对代码进行了一些修改,以更改输出格式,这就是我使用并发现正在使用的内容:(这是我HTML页面的代码)
var a=document.getElementById(“loc”);
函数jsonpCallback(数据){
a、 innerHTML=“纬度:”+data.Latitude+
“
经度:”+data.Longitude+
“
国家:”+data.address.Country;
}
对于寻找全功能地理定位实用程序的开发人员,您可以查看(我是作者)
下面的示例将首先尝试HTML5地理定位API以获得精确的坐标。如果失败或被拒绝,它将回退到Geo IP查找。一旦获得坐标,它将把坐标反编码到地址中
var选项={
EnableHighAccurance:正确,
超时:6000,
最大值:0,
期望准确度:30,
fallbackToIP:true,//如果HTML5地理定位失败或被拒绝
addressLookup:true,//获取详细的地址信息
时区:对,
地图:“我的地图”//这甚至会为您创建地图
};
定位(选项,功能(错误,位置){
控制台日志(错误位置);
});
它支持地理位置(通过HTML5或IP查找)、地理编码、地址查找(反向地理编码)、距离和持续时间、时区信息等…您无法通过IP获取城市位置。 在这里,您可以使用jquery获取国家/地区:
$.get("http://ip-api.com/json", function(response) {
console.log(response.country);}, "jsonp");
您可以使用获取访客的位置。它支持IPv6
作为奖励,它允许检查ip地址是tor节点、公共代理还是垃圾邮件发送者
JavaScript代码:
function getIPDetails() {
var ipAddress = document.getElementById("txtIP").value;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
console.log(JSON.parse(xhttp.responseText));
}
};
xhttp.open("GET", "http://ip-api.io/json/" + ipAddress, true);
xhttp.send();
}
<input type="text" id="txtIP" placeholder="Enter the ip address" />
<button onclick="getIPDetails()">Get IP Details</button>
函数getIPDetails(){
var ipAddress=document.getElementById(“txtIP”).value;
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
log(JSON.parse(xhttp.responseText));
}
};
xhttp.open(“GET”http://ip-api.io/json/“+ipAddress,正确);
xhttp.send();
}
获取IP详细信息
jQuery代码:
$(document).ready(function () {
$('#btnGetIpDetail').click(function () {
if ($('#txtIP').val() == '') {
alert('IP address is reqired');
return false;
}
$.getJSON("http://ip-api.io/json/" + $('#txtIP').val(),
function (result) {
alert('Country Name: ' + result.country_name)
console.log(result);
});
});
});
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<div>
<input type="text" id="txtIP" />
<button id="btnGetIpDetail">Get Location of IP</button>
</div>
$(文档).ready(函数(){
$('btnGetIpDetail')。单击(函数(){
如果($('#txtIP').val()=''){
警报(“需要IP地址”);
返回false;
}
$.getJSON(“http://ip-api.io/json/“+$('#txtIP').val(),
功能(结果){
警报(“国家名称:”+结果。国家名称)
控制台日志(结果);
});
});
});
获取IP地址
查看我构建的一个服务,该服务速度快,性能可靠,因为有10个全局端点,每个端点每秒可以处理超过10000个请求
这个答案使用了一个非常有限的“test”API键,只用于测试几个调用。对于您自己的免费API密钥,每天最多可收到1500个开发请求
此代码段将返回当前ip的详细信息。要查找其他ip地址,只需将ip附加到url,例如
API还提供一个is_eu
字段,指示用户是否在欧盟国家/地区
$.get(“https://api.ipdata.co?api-键=测试”,功能(响应){
$(“#response”).html(JSON.stringify(response,null,4));
}“jsonp”)代码>
我想在不使用任何外部api的情况下为少数几个国家本地化客户端定价,所以我使用了lo
https://api.ipdata.co/1.1.1.1?api-key=test