Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得访客';s位置(即国家)是否使用地理位置?_Javascript_Geolocation - Fatal编程技术网

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