我试图学习使用HTML 5 Geolocation API,在寻找样本时,我发现了使用此API的一个很好的例子http://www.w3schools.com/html/html5_geolocation.asp
但问题是,当我在任何笔记本电脑上运行时,它都有效。但是在桌面计算机上运行时,它并没有;
笔记本电脑和个人电脑都在同一个网络上(相同的公共IP地址),并且都有最新版本的Firefox和Chrome浏览器。
此API还需要什么工作?我的笔记本电脑中有哪些内容,这在PC上无法使用?
答案 0 :(得分:0)
您能否提供更多信息?虽然知道使用什么浏览器很有用,但知道它很有用
以下是 W3C GeoLocation API
的有用说明Geolocation API定义了与仅与托管实施的设备相关联的位置信息的高级接口,例如纬度和经度。 API本身与底层位置信息源无关。常见的位置信息源包括全球定位系统(GPS)和从网络信号推断的位置,例如IP地址,RFID,WiFi和蓝牙MAC地址,以及GSM / CDMA小区ID,以及用户输入。不保证API返回设备的实际位置。
根据我的经验,需要注意的关键是3G / 4G或WiFi上的移动/笔记本电脑设备往往会提供更好的效果,但正如规范所解释的那样,无法保证返回的内容。
仅供我在我的iMac(以太网)上运行HTML5 GeoLocation演示,它返回了#34;悉尼"的确切中心。作为位置,即使我不在附近。
答案 1 :(得分:0)
如果用户不起作用,您可以使用其他API来定位用户。 (注意:W3School脚本在我的电脑上无效)
Maxmind.com插件(已安装在geoplugin.net上):
http://www.geoplugin.net/json.gp?ip=8.8.8.8&jsoncallback=callback
您可以使用它JSONP:
<script type="text/javascript" src="http://l2.io/ip.js?var=userip"></script>
<script scr="http://www.geoplugin.net/json.gp?ip="+userip+"&jsoncallback=callback"></script>
或者安装自己的Maxmind.com插件:
http://dev.maxmind.com/geoip/legacy/geolite/
注意:您可以通过PHP文件和这里的AJAX请求获取IP
https://stackoverflow.com/questions/1641868/how-to-get-client-ip-address-using-jquery
您需要一个谷歌API密钥,每个信息都在这里:
http://www.adammcfarland.com/2009/11/19/simple-ip-geolocation-using-javascript-and-the-google-ajax-search-api/
答案 2 :(得分:0)
我使用了w3schools中的相同脚本,并在以下链接中给出: http://www.nirt.in/geolocate.htm
显示的位置不是笔记本电脑的位置或PC的位置。该位置是ISP提供商提供的IP地址。如果您使用智能手机,则位置将更接近相同,因为IP是最近的手机信号塔的位置。如果您的智能手机配有GPS,您可以使用Watchposition而不是getcurrentposition,那么您将获得智能手机的确切位置。
代码是
<html>
<body>
<div id="mapholder"></div>
<p id="locate">location:</p>
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition,showError);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
var latlon=position.coords.latitude+","+position.coords.longitude;
var img_url="http://maps.googleapis.com/maps/api/staticmap?center="
+latlon+"&zoom=15&size=600x600&sensor=false";
document.getElementById("mapholder").innerHTML="<img src='"+img_url+"'>";
document.getElementById("locate").innerHTML="latlon="+latlon;
}
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}
getLocation();
</script>
<IMG SRC="rs.gif" style="position:absolute;left:305;top:290;z-index:10">
</body>
</html>