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.
Ответы
Ответ 1
Работает отлично для меня - с Chrome 11 и Firefox 4.0.1 на Win 7
- Убедитесь, что вы не отключили отслеживание местоположения в Chrome:
Options > Under the Hood > Content Settings > Location
- Из-за ограничений безопасности ресурсы, загруженные схемой
file:///
, не имеют доступа к местоположению. См. HTML 5 Geo Location Prompt в Chrome.
Ответ 2
Если ваш домен небезопасен (например, HTTP, а не HTTPS), вам не разрешен доступ к местоположению в Chrome. Это с Chrome версии 50 (12PM PST 20 апреля 2016 года).
Подробнее см. https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only.
Ответ 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>