var showMeLastTime = 0; var showMeTimerOn = false; var intervalId = null; /** * Пытается более точно определить координаты пользователя на карте и, при необходимости, обновляет положение точки "im" * @returns {undefined} */ function showMeOnTheMap() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( geolocationSuccess, geolocationFailure, { enableHighAccuracy: true, timeout: 20000, maximumAge: 60000 } ); $('#showMeOnTheMap').addClass('inProgress'); } else { alert('Error'); } } function geolocationSuccess(pos) { $('#showMeOnTheMap').removeClass('inProgress'); if (typeof (points.circle) != "undefined") { myMap.removeLayer(points.circle); } coords = [pos.coords.latitude, pos.coords.longitude]; points.circle = L.circle(coords, pos.coords.accuracy); points.circle.addTo(myMap); setTimeout(function () { if (typeof (points.circle) != "undefined") { myMap.removeLayer(points.circle); } }, 3000); $.cookie('userLat', pos.coords.latitude); $.cookie('userLng', pos.coords.longitude); myMap.removeLayer(points.im); points.im.setLatLng(coords).addTo(myMap); myMap.setView(coords, myMap.getZoom()); } function geolocationFailure(positionError) { $('#showMeOnTheMap').removeClass('inProgress'); if (typeof (points.circle) != "undefined") { myMap.removeLayer(points.circle); } if (positionError.code == 1) { text = "К сожалению Вы решили не разрешили предоставлять данные о своем местоположении. Проверьте настройки ГЕО-приватности для браузера и сайта."; } else if (positionError.code == 2) { text = "Не удалось связаться со службой определения местоположения. Возможно проблемы с сетью."; } else if (positionError.code == 3) { text = "He удалось определить местоположение в течение длительного времени. Попробуйте ещё раз."; } else { text = 'Ошибка при определении координат. #' + positionError.code; } alert(text); }