Высокоточная геолокация Html5

Я пытаюсь найти устройство с помощью встроенного GPS (например, местоположение сайта для приложений). Я читал, что это возможно с помощью EnableHighAccuracy: true.

Как я могу установить "enableHighAccuracy: true" в этом коде? Я пробовал в разных позициях, но он не работает.

<script type="text/javascript">
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position){
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
        var accuracy = position.coords.accuracy;
        var coords = new google.maps.LatLng(latitude, longitude);
        var mapOptions = {
            zoom: 15,
            center: coords,
            mapTypeControl: true,
            navigationControlOptions: {
                style: google.maps.NavigationControlStyle.SMALL
            },
            mapTypeId: google.maps.MapTypeId.ROADMAP
            };

         var capa = document.getElementById("capa");
         capa.innerHTML = "latitud: " + latitude + " longitud: " + "   aquesta es la precisio en metres  :  " + accuracy;  

            map = new google.maps.Map(
                document.getElementById("mapContainer"), mapOptions
                );
            var marker = new google.maps.Marker({
                    position: coords,
                    map: map,
                    title: "ok"
            });


        });

    }else {
        alert("Geolocation API is not supported in your browser.");
    }

</script>

Спасибо большое!

Ответ 1

Вам нужен объект PositionOptions, в котором вы устанавливаете флаг высокой точности после API.

Я цитирую здесь: http://diveintohtml5.info/geolocation.html

Функция getCurrentPosition() имеет необязательный третий аргумент, a Объект PositionOptions. Есть три свойства, которые вы можете установить в Объект PositionOptions. Все свойства являются необязательными. Вы можете установить любое или все или ни одно из них.

ОБЪЕКТ ПОЗИЦИОННЫХ ОБЪЕКТОВ

Property            Type        Default     Notes
--------------------------------------------------------------
enableHighAccuracy  Boolean     false       true might be slower
timeout             long    (no default)    in milliseconds
maximumAge              long    0               in milliseconds

Итак, он должен работать следующим образом:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position){
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    var accuracy = position.coords.accuracy;
    var coords = new google.maps.LatLng(latitude, longitude);
    var mapOptions = {
        zoom: 15,
        center: coords,
        mapTypeControl: true,
        navigationControlOptions: {
            style: google.maps.NavigationControlStyle.SMALL
        },
        mapTypeId: google.maps.MapTypeId.ROADMAP
        };

     var capa = document.getElementById("capa");
     capa.innerHTML = "latitud: " + latitude + " longitud: " + "   aquesta es la precisio en metres  :  " + accuracy;  

        map = new google.maps.Map(
            document.getElementById("mapContainer"), mapOptions
            );
        var marker = new google.maps.Marker({
                position: coords,
                map: map,
                title: "ok"
        });


    },function error(msg){alert('Please enable your GPS position future.');  

  }, {maximumAge:600000, timeout:5000, enableHighAccuracy: true});

}else {
    alert("Geolocation API is not supported in your browser.");
}

Заметил. Я добавил следующие два параметра для вызова getCurrentPosition:

,function error(msg){alert('Please enable your GPS position future.');}  

, {maximumAge:600000, timeout:5000, enableHighAccuracy: true});

Также смотрите: Geolocation HTML5 enableHighAccuracy True, False или лучший вариант?