首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟GPS定位和Chrome for Android

模拟GPS定位和Chrome for Android
EN

Stack Overflow用户
提问于 2016-08-30 04:25:31
回答 2查看 1.6K关注 0票数 0

我有一个Trimble GNSS接收器,具有蓝牙功能,可以使用Trimble GNSS Status应用程序连接到ProXT。该应用程序输出基本单元的位置,如果我在开发人员选项中选择该应用程序作为模拟位置提供者,它在所有本地应用程序中都很有效,但如果我尝试使用使用html5地理位置API的web应用程序,它将失败。我的GIS数据采集应用程序是基于web的,我需要这个工作!

EN

回答 2

Stack Overflow用户

发布于 2016-12-03 03:36:12

我遇到了同样的问题,并能够从Trimble获得一些帮助:

我假设你在Android上工作,因为我们也在Android上看到了这种行为。不幸的是,你已经注意到了Google Chrome的一个奇怪的行为特征。您会发现,如果使用Firefox浏览器(或其他几种浏览器)并访问相同的maps.google.com,该位置将正确显示。

令人费解的是,Location API的Chrome实现并不能处理所有情况下的模拟位置。我们正在对此进行调查,但到目前为止还没有正式的解决方案(除了非Chrome浏览器的变通方法)。

票数 1
EN

Stack Overflow用户

发布于 2017-06-22 20:53:04

使用带有R2的Trimble "GNSS status“应用程序,在火狐和safari正常工作时,遇到了ipad+chrome和各种android+chrome组合的相同问题。

对于一个简单的测试:

代码语言:javascript
复制
<DOCTYPE html>
<html>
  <head>
    <style>
      body {
          background: white;
          font-family: Arial, Helvetica, sans-serif;
          font-size: 1em;
          color: #000;
      }
      @media all and (max-width: 1000px) {
          body { font-size: 200%;}
      }
    </style>
    <script>
      function init() {
        var compass = document.getElementById('compass');
        var lat = document.getElementById('lat');
        var lon = document.getElementById('lon');
        var acc = document.getElementById('acc');
        var alt = document.getElementById('alt');
        var altAcc = document.getElementById('altAcc');
        var err = document.getElementById('err');
        var heading = document.getElementById('heading');
        var speed = document.getElementById('speed');
        var timestamp = document.getElementById('timestamp');

        if(window.DeviceOrientationEvent) {
            window.addEventListener('deviceorientation', function(event) {
                var alpha;
                if(event.webkitCompassHeading) {
                  alpha = event.webkitCompassHeading;
                }
                else {
                  alpha = event.alpha;
                }
                compass.innerHTML = alpha;
            }, false);
        }

        if(navigator.geolocation) {
            var opts = {
                        enableHighAccuracy: true,
                        timeout: 6000,
                        maximumAge: 5000
                       };
            navigator.geolocation.watchPosition(
                    updateLocation,
                    handleLocationError,
                    opts
            );
        }
      }

    function updateLocation(position) {
        lat.innerHTML = position.coords.latitude;
        lon.innerHTML = position.coords.longitude;
        acc.innerHTML = position.coords.accuracy;
        alt.innerHTML = position.coords.altitude;
        altAcc.innerHTML = position.coords.altitudeAccuracy;
        heading.innerHTML = position.coords.heading;
        speed.innerHTML = position.coords.speed;
        var t = new Date(position.timestamp).toString();
        timestamp.innerHTML = t;
        addMsg(t);
    }

    function handleLocationError(e){
      var msg = e.code+': ';
      switch (e.code) {
          case error.PERMISSION_DENIED:
              msg += 'Permission was denied';
              break;
          case error.POSITION_UNAVAILABLE:
              msg +='Position is currently unavailable.';
              break;
          case error.PERMISSION_DENIED_TIMEOUT:
              msg += 'User took to long to grant/deny permission.';
              break;
          case error.UNKNOWN_ERROR:
              msg += 'An unknown error occurred.';
              break;
      }
      addMsg(msg);
    }

    function addMsg(msg){
      err.appendChild(document.createTextNode('message: '+ msg));
      err.appendChild(document.createElement("br"));
    }
    </script>
  </head>
  <body onload="init()" >
      <p>compass: <span id="compass"></span> deg</p>
      <hr>
      <p>lat: <span id="lat"></span> deg</p>
      <p>lon: <span id="lon"></span> deg</p>
      <p>acc: <span id="acc"></span> m</p>
      <p>alt: <span id="alt"></span> m +msl</p>
      <p>alt. acc: <span id="altAcc"></span> m</p>

      <p>heading: <span id="heading"></span> deg</p>
      <p>speed: <span id="speed"></span> m/s</p>
      <p>timestamp: <span id="timestamp"></span></p>
      <hr>
      <p>messages:</p>
      <div id="err"></div>
  </body>
</html>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39214630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档