我正在尝试做一个简单的地理定位html5:
$(function() {
var currentLatitude ="";
var currentLongitude ="";
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, showError);
function showPosition(position) {
currentLatitude = position.coords.latitude;
currentLongitude = position.coords.longitude;
}
} else {
// location based on the IP - less accurate
}
错误是位置错误的权限,即使我有我的站点(本地运行)异常。 我的第二个选择是IP(ipinfo.io):
function showError(error) {
var x = $('#curr_loc_target');
switch(error.code) {
case error.PERMISSION_DENIED:
x.html("User denied the request for Geolocation.");
jQuery.get("http://ipinfo.io/json", function (response)
{
console.log(response) ;
currentLatitude = response.loc.split(',')[0];
currentLongitude = response.loc.split(',')[1];
console.log("lat" + currentLatitude+ "," + "lngs" +currentLongitude) ;
} );
break;
case error.POSITION_UNAVAILABLE:
x.html("Location information is unavailable.");
break;
case error.TIMEOUT:
x.html("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
x.html("An unknown error occurred.");
break;
}
}
它有效,但根本不准确。 我需要做的就是将lat,lng发送到我的服务器,如果它不是本地的,它会工作吗? 或者有人知道解决这个错误的方法吗?
答案 0 :(得分:0)
在我的网站上运行的代码。您似乎已禁用浏览器上的地理位置跟踪,直接将您发送到错误方案。请注意,它将要求用户明确授予您获取位置跟踪信息的权限。
答案 1 :(得分:0)
我试图测试地理位置,也从我的本地计算机上打开.html文件 - Chrome总是在这里给我错误回调:
navigator.geolocation.getCurrentPosition(success, error);
尽管已启用地理定位跟踪。 其他浏览器给出了成功回调。 然后我将页面放到托管中,它在所有浏览器中都取得了成功,包括Google Chrome。 当您的网站在本地运行时,您可能有类似的原因获得位置许可。