HTML 5 Geolocation仅适用于笔记本电脑

时间:2014-04-24 07:10:52

标签: javascript html geolocation desktop

我试图学习使用HTML 5 Geolocation API,在寻找样本时,我发现了使用此API的一个很好的例子http://www.w3schools.com/html/html5_geolocation.asp

但问题是,当我在任何笔记本电脑上运行时,它都有效。但是在桌面计算机上运行时,它并没有;

笔记本电脑和个人电脑都在同一个网络上(相同的公共IP地址),并且都有最新版本的Firefox和Chrome浏览器。

此API还需要什么工作?我的笔记本电脑中有哪些内容,这在PC上无法使用?

3 个答案:

答案 0 :(得分:0)

您能否提供更多信息?虽然知道使用什么浏览器很有用,但知道它很有用

  1. 笔记本电脑是WiFi,以太网还是3G / 4G Tether?
  2. 这些PC是WiFi,以太网还是3G / 4G Tether?
  3. "它不起作用"意思?该网站什么都没有回归?或者位置完全错了?
  4. 是否在PC上启用/禁用了位置共享功能?请参阅: https://support.google.com/chrome/answer/142065?hl=en
  5. 以下是 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脚本在我的电脑上无效)

以下是一些API:

Maxmind.com

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

Google API

您需要一个谷歌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>