У меня есть приемник Trimble ProXT GNSS, который имеет Bluetooth и может подключаться к android с помощью приложения Trimble GNSS Status. Приложение выводит местоположение базового блока, и, если я выбираю приложение в качестве поставщика определения местоположения в вариантах разработчика, он отлично работает во всех родных приложениях, но если я попытаюсь использовать веб-приложение, использующее API геолокации html5, он терпит неудачу. Приложение GIS для сбора данных основано на Интернете, и мне нужно, чтобы это работало!Мощное местоположение GPS и Chrome для Android
ответ
Я столкнулся с этим же вопросом и был в состоянии получить некоторую помощь от Trimble:
Я предполагаю, что вы работаете на Android, так как именно там мы видели это поведение, а также. К сожалению, вы заметили необычное поведение, характерное для Google Chrome. Вы обнаружите, что если вы используете браузер Firefox (или несколько других) и посетите тот же maps.google.com, местоположение будет отображаться правильно.
Необъяснимо, внедрение Chrome API местоположения в Chrome не позволяет обрабатывать макеты во всех случаях. У нас есть постоянное расследование этого с нашей стороны, но формального разрешения до сих пор нет (кроме обходного решения браузера без Chrome).
Использование 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>