Подтвердить что ты не робот

API W3C Geolocation не работает в Chrome

Нижеприведенный код работает в Firefox, но не в Google Chrome:

<!DOCTYPE html>
<html>
    <head>
        <title>title</title>
        <script type="text/javascript">
            var successCallback = function(data) {
                console.log('latitude: ' + data.coords.latitude + ' longitude: ' + data.coords.longitude);
            };

            var failureCallback = function() {
                console.log('location failure :(');
            };

            var logLocation = function() {

                //determine if the handset has client side geo location capabilities
                if(navigator.geolocation){
                   navigator.geolocation.getCurrentPosition(successCallback, failureCallback);
                }
                else{
                   alert("Functionality not available");
                }
            };

            logLocation();
            setTimeout(logLocation, 5000);
        </script>
    </head>
    <body>
        <p>Testing</p>
    <body>
</html>

Что происходит? Я думал, что Google Chrome должен поддерживать API-интерфейс W3C Geolocation.

4b9b3361

Ответ 1

Работает отлично для меня - с Chrome 11 и Firefox 4.0.1 на Win 7

  • Убедитесь, что вы не отключили отслеживание местоположения в Chrome: Options > Under the Hood > Content Settings > Location
  • Из-за ограничений безопасности ресурсы, загруженные схемой file:///, не имеют доступа к местоположению. См. HTML 5 Geo Location Prompt в Chrome.

Ответ 3

в 2017 году:

Примечание. Начиная с Chrome 50, API геолокации будет работать только в безопасных контекстах, таких как HTTPS. Если ваш сайт размещен в незащищенном источнике (например, HTTP), запросы на определение местоположения пользователей больше не будут работать.

API геолокации удален из необеспеченных источников в Chrome 50

Ответ 4

API геолокации позволяет вам, с согласия пользователя, определить местоположение пользователя. Вы можете использовать эту функциональность для таких вещей, как руководство пользователя к месту назначения и гео-тегирование созданного пользователем контента; например, маркировка, где была сделана фотография.

API геолокации также позволяет вам видеть, где находится пользователь, и следить за ними, когда они перемещаются, всегда с согласия пользователя (и только при открытой странице). Это создает множество интересных вариантов использования, таких как интеграция с бэкэнд-системами для подготовки заказа для коллекции, если пользователь находится рядом.

При использовании API геолокации вам нужно знать многое. Это руководство проведет вас через общие варианты использования и решения.

https://developers.google.com/web/fundamentals/native-hardware/user-location/?hl=en

Ответ 5

Он отлично работает для меня - с Chrome 11 и Firefox 4.0.1 на Win 7

Убедитесь, что вы не отключили отслеживание местоположения в Chrome: Options > Under the Hood > Настройки содержимого > Местоположение, пожалуйста, разрешите  и после проверки разрешения, пожалуйста, запустите его

после запуска либо он будет sucesscallback, либо он попадет в errorcallback

function sucesscallback (position)
{

var userLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

   
    var myOptions = {
        zoom: 15,
        center: userLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var mapObject = new google.maps.Map(document.getElementById("googleMap"), myOptions);

    var marker = new google.maps.Marker({
        map: mapObject,
        position: userLatLng

    });
   
}




    function failureCallback(error) {
    
        switch (error.code) {
            case 1:
                alert("User denied the request for Geolocation.");
                break;
            case 2:
                alert("Location information is unavailable. Please ensure Location is On");
                break;
            case 3:
                alert("timeout");
                break;
            case 4:
                alert("An unknown error occurred.");
                break;
        }
    }
<div id='googleMap' style='width:300px;height:300px;'>
</div>