2016-08-29 5 views
0

У меня есть приемник Trimble ProXT GNSS, который имеет Bluetooth и может подключаться к android с помощью приложения Trimble GNSS Status. Приложение выводит местоположение базового блока, и, если я выбираю приложение в качестве поставщика определения местоположения в вариантах разработчика, он отлично работает во всех родных приложениях, но если я попытаюсь использовать веб-приложение, использующее API геолокации html5, он терпит неудачу. Приложение GIS для сбора данных основано на Интернете, и мне нужно, чтобы это работало!Мощное местоположение GPS и Chrome для Android

ответ

1

Я столкнулся с этим же вопросом и был в состоянии получить некоторую помощь от Trimble:

Я предполагаю, что вы работаете на Android, так как именно там мы видели это поведение, а также. К сожалению, вы заметили необычное поведение, характерное для Google Chrome. Вы обнаружите, что если вы используете браузер Firefox (или несколько других) и посетите тот же maps.google.com, местоположение будет отображаться правильно.

Необъяснимо, внедрение Chrome API местоположения в Chrome не позволяет обрабатывать макеты во всех случаях. У нас есть постоянное расследование этого с нашей стороны, но формального разрешения до сих пор нет (кроме обходного решения браузера без Chrome).

1

Использование Trimble «GNSS status» приложение с R2 и запуск в те же проблемы om как ipad + chrome, так и различные комбинации android + chrome, в то время как Firefox и Safari работают нормально.

для простого теста:

<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>