【问题标题】:geolocation doesn't work on mobiles地理定位在手机上不起作用
【发布时间】:2013-02-28 19:34:44
【问题描述】:

我有一个简单的 JavaScript 代码,它可以获取用户坐标,在计算机上运行良好,但在手机上就不行了。

function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition);
    }
  else{x.innerHTML="Geolocation is not supported by this browser.";}
}

从 w3schools 得到这个。第一次询问我是否想分享我的位置(同意),当我按下按钮执行该功能时,什么也没有发生(也没有错误消息),在我的电脑上工作,所以它不是代码。 尝试了 2 种不同的设备:galaxy nexus 和galaxy s2 都是软糖。 尝试了 chrome、chrome beta、firefox 和内置浏览器。 在其中一些上,它甚至都懒得弹出“共享位置”消息。 我该如何解决这个问题?

【问题讨论】:

    标签: javascript android mobile geolocation


    【解决方案1】:

    我以前也遇到过这个问题,我认为不可能强制共享位置信息,您至少必须提示用户是否要打开位置服务在。但是,here's 一个线程详细说明了如何提示 android 用户打开共享位置。另外,我会避免使用 w3schools。

    良好的地理定位应用: http://www.9lessons.info/2011/06/geo-location-with-html5-and-jquery.html

    【讨论】:

      【解决方案2】:

      Html5 地理定位需要用户权限。如果您不想这样做,请使用外部定位器,例如 https://www.geoip-db.com 他们提供 JSON 和 JSONP 回调解决方案。

      一个简单的 javascript 示例:

      <!DOCTYPE html>
      <html>
      <head>
      <title>Geo City Locator by geoip-db.com</title>
      </head>
      <body>
          <div>Country: <span id="country"></span></div>
          <div>State: <span id="state"></span></div>
          <div>City: <span id="city"></span></div>
          <div>Postal: <span id="postal"></span></div>
          <div>Latitude: <span id="latitude"></span></div>
          <div>Longitude: <span id="longitude"></span></div>
          <div>IP address: <span id="ipv4"></span></div>                             
      </body>
      
      <script>
      
          var country = document.getElementById('country');
          var state = document.getElementById('state');
          var city = document.getElementById('city');
          var postal = document.getElementById('postal');
          var latitude = document.getElementById('latitude');
          var longitude = document.getElementById('longitude');
          var ip = document.getElementById('ipv4');
      
          function callback(data)
          {
              country.innerHTML = data.country_name;
              state.innerHTML = data.state;
              city.innerHTML = data.city;
              postal.innerHTML = data.postal;
              latitude.innerHTML = data.latitude;
              longitude.innerHTML = data.longitude;
              ip.innerHTML = data.IPv4;
          }
      
          var script = document.createElement('script');
          script.type = 'text/javascript';
          script.src = 'https://geoip-db.com/json/geoip.php?jsonp=callback';
          var h = document.getElementsByTagName('script')[0];
          h.parentNode.insertBefore(script, h);
      
      </script> 
      </html>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 2018-11-20
        相关资源
        最近更新 更多