HTML Geolocation
Ранее Web Storage запоминал строки ключ/значение. Этот урок уходит от сохранения и знакомит с Geolocation: чтение приблизительной широты/долготы через navigator.geolocation — только после разрешения. HTML загружает скрипт, который спрашивает местоположение. Практика — одно чтение, watch/clear, вежливый отказ — не SDK карт и не geo БД.
Зачем geolocation в курсе HTML
Новички часто делают кнопку «рядом со мной». Geolocation — первый обычный API. После web storage разделение иное: HTML владеет оболочкой и кнопкой; JS запрашивает координаты. Хватает getCurrentPosition, знания watchPosition и обработки отказа.
Прямой ответ
1) Вызовите getCurrentPosition. 2) Прочитайте latitude/longitude. 3) Лучше после клика пользователя. 4) watchPosition только для обновлений; clearWatch. 5) Никакого HTML-тега. 6) При отказе держите страницу полезной.
📊 getCurrentPosition vs watchPosition
| Topic | getCurrentPosition | watchPosition |
|---|---|---|
| Typical use | One-shot “where am I now” | Ongoing updates while watching |
| Callback pattern | success once (plus optional error) | success may fire repeatedly |
| Stop watching | Not needed (single read) | clearWatch(watchId) |
| Beginner fit | Share-location button | Live tracking demos (careful) |
| Permission | Still required | Still required |
| This course depth | Intro focus | Short demo + clearWatch only |
Крошечное демо getCurrentPosition
Клик запрашивает позицию и печатает координаты. Если API нет или отказ — спокойное сообщение.
<button id="loc" type="button">Share location</button>
<pre id="out"></pre>
<script>
const out = document.getElementById("out");
document.getElementById("loc").onclick = function () {
if (!navigator.geolocation) {
out.textContent = "No geolocation support";
return;
}
out.textContent = "Waiting for permission…";
navigator.geolocation.getCurrentPosition(
function (pos) {
out.textContent =
pos.coords.latitude + ", " + pos.coords.longitude;
},
function () {
out.textContent = "Permission denied or unavailable";
}
);
};
</script>
Читаем вызовы getCurrentPosition
- navigator.geolocation — точка входа
- getCurrentPosition спрашивает один раз
- latitude/longitude — первые числа новичка
- Сначала проверьте поддержку
- error-callback покрывает отказ
- Предпочтителен HTTPS
- В отличие от Web Storage: чтение, не сохранение
watchPosition для непрерывных обновлений
Успех может срабатывать при движении. Сохраните id и clearWatch — не оставляйте watch навечно во введении.
<button id="start" type="button">Watch location</button>
<button id="stop" type="button">Stop watching</button>
<pre id="live"></pre>
<script>
const live = document.getElementById("live");
let watchId = null;
document.getElementById("start").onclick = function () {
if (!navigator.geolocation) {
live.textContent = "No geolocation support";
return;
}
if (watchId !== null) {
return;
}
live.textContent = "Watching…";
watchId = navigator.geolocation.watchPosition(
function (pos) {
live.textContent =
pos.coords.latitude + ", " + pos.coords.longitude;
},
function () {
live.textContent = "Permission denied or unavailable";
watchId = null;
}
);
};
document.getElementById("stop").onclick = function () {
if (watchId !== null) {
navigator.geolocation.clearWatch(watchId);
watchId = null;
live.textContent = "Stopped watching";
}
};
</script>
Читаем идею watchPosition
- Та же модель разрешения
- Успех может повторяться
- clearWatch останавливает — дайте Stop
- Не библиотека карт
- Не Web Storage
- Выбирайте get vs watch по частоте
- Дальше: drag and drop
Когда спрашивать
- Клик «Поделиться местоположением»: хорошее время
- При загрузке без контекста: обычно плохо
- Непрерывное движение: watchPosition со стопом
- Сохранение темы: был Web Storage
- Полный map-продукт: за пределами этого интро
- Тихий трекинг: антипаттерн
Практика — вежливо попросите fix
- Вставьте демо getCurrentPosition и проверьте prompt.
- Подтвердите координаты или спокойный отказ.
- Запустите watch, затем Stop.
- Опционально: откажите без падения.
- Предложение: Web Storage сохраняет строки; Geolocation читает с разрешением.
- Отдавайте по http(s) при необходимости.
- Впереди: drag and drop.
Лёгкие ошибки
- Ждать тег geolocation
- Спрашивать при каждой загрузке
- Игнорировать error-callback
- Путать с Web Storage
- Оставлять watch без clearWatch
- Считать GPS всегда точным
- Считать интро полным курсом карт
Итог
- Geolocation — JS API с разрешением на navigator.geolocation
- getCurrentPosition один раз; watchPosition + clearWatch для обновлений
- HTML даёт UI; спрашивайте после явного действия
- Обрабатывайте отказ мягко
- Web Storage был строками; этот урок — разрешённые координаты
- Далее: HTML drag and drop
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху