Обзор
В этом руководстве показано, как отобразить географическое местоположение устройства на карте Google, используя функцию геолокации HTML5 вашего браузера вместе с API JavaScript Карт. Географическое местоположение будет отображаться только в том случае, если пользователь разрешил совместное использование местоположения.
Когда пользователь запускает запрос геолокации, он получит запрос от браузера о согласии на доступ к данным о местоположении устройства. Если запрос не выполнен, это может быть связано с тем, что в разрешениях на определение местоположения было отказано или устройство не смогло определить свое местоположение. Эта функция доступна только в безопасном контексте (HTTPS) в некоторых или во всех поддерживающих браузерах.
Ниже представлена карта, по которой можно определить текущее местоположение устройства пользователя.
В приведенном ниже примере показан весь код, необходимый для создания этой карты.
Машинопись
// Note: This example requires that you consent to location sharing when // prompted by your browser. If you see the error "The Geolocation service // failed.", it means you probably did not give permission for the browser to // locate you. let map: google.maps.Map, infoWindow: google.maps.InfoWindow; function initMap(): void { map = new google.maps.Map(document.getElementById("map") as HTMLElement, { center: { lat: -34.397, lng: 150.644 }, zoom: 6, }); infoWindow = new google.maps.InfoWindow(); const locationButton = document.createElement("button"); locationButton.textContent = "Pan to Current Location"; locationButton.classList.add("custom-map-control-button"); map.controls[google.maps.ControlPosition.TOP_CENTER].push(locationButton); locationButton.addEventListener("click", () => { // Try HTML5 geolocation. if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( (position: GeolocationPosition) => { const pos = { lat: position.coords.latitude, lng: position.coords.longitude, }; infoWindow.setPosition(pos); infoWindow.setContent("Location found."); infoWindow.open(map); map.setCenter(pos); }, () => { handleLocationError(true, infoWindow, map.getCenter()!); } ); } else { // Browser doesn't support Geolocation handleLocationError(false, infoWindow, map.getCenter()!); } }); } function handleLocationError( browserHasGeolocation: boolean, infoWindow: google.maps.InfoWindow, pos: google.maps.LatLng ) { infoWindow.setPosition(pos); infoWindow.setContent( browserHasGeolocation ? "Error: The Geolocation service failed." : "Error: Your browser doesn't support geolocation." ); infoWindow.open(map); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// Note: This example requires that you consent to location sharing when // prompted by your browser. If you see the error "The Geolocation service // failed.", it means you probably did not give permission for the browser to // locate you. let map, infoWindow; function initMap() { map = new google.maps.Map(document.getElementById("map"), { center: { lat: -34.397, lng: 150.644 }, zoom: 6, }); infoWindow = new google.maps.InfoWindow(); const locationButton = document.createElement("button"); locationButton.textContent = "Pan to Current Location"; locationButton.classList.add("custom-map-control-button"); map.controls[google.maps.ControlPosition.TOP_CENTER].push(locationButton); locationButton.addEventListener("click", () => { // Try HTML5 geolocation. if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( (position) => { const pos = { lat: position.coords.latitude, lng: position.coords.longitude, }; infoWindow.setPosition(pos); infoWindow.setContent("Location found."); infoWindow.open(map); map.setCenter(pos); }, () => { handleLocationError(true, infoWindow, map.getCenter()); }, ); } else { // Browser doesn't support Geolocation handleLocationError(false, infoWindow, map.getCenter()); } }); } function handleLocationError(browserHasGeolocation, infoWindow, pos) { infoWindow.setPosition(pos); infoWindow.setContent( browserHasGeolocation ? "Error: The Geolocation service failed." : "Error: Your browser doesn't support geolocation.", ); infoWindow.open(map); } window.initMap = initMap;
Попробуйте образец
Что такое геолокация?
Геолокация — это определение географического местоположения вычислительного устройства с использованием различных механизмов сбора данных. Обычно большинство служб геолокации используют адреса сетевой маршрутизации или внутренние чипы GPS для определения этого местоположения. Геолокация — это API для конкретного устройства. Это означает, что браузеры или устройства должны поддерживать геолокацию, чтобы использовать ее через веб-приложения.
Стандарт геолокации W3C
Приложения, которые хотят выполнять геолокацию, должны поддерживать стандарт W3C Geolocation . Обратите внимание, что приведенный выше пример кода определяет местоположение устройства через API W3C navigator.geolocation
.
Иногда веб-сайты используют IP-адреса для определения местоположения устройства, однако это может дать лишь приблизительную оценку этого местоположения. API-интерфейсы стандарта W3C являются наиболее полно поддерживаемыми и наиболее точными, поэтому им следует отдавать приоритет перед другими методами геолокации.