Omówienie
W tym samouczku pokazujemy, jak wyświetlić lokalizację geograficzną urządzenia na mapie Google, używając funkcję geolokalizacji HTML5 w przeglądarce wraz z interfejsem Maps JavaScript API. lokalizacja geograficzna jest wyświetlana tylko wtedy, gdy użytkownik zezwolił na udostępnianie lokalizacji.
Gdy użytkownik wywoła żądanie geolokalizacji, przeglądarka wyświetli prośbę o potwierdzenie w celu uzyskania zgody na dostęp do danych o lokalizacji urządzenia. Jeśli żądanie nie powiedzie się, może to być spowodowane tym, że: odmówiono dostępu do lokalizacji lub urządzenie nie mogło określić swojej lokalizacji. Ta funkcja jest dostępna tylko w kontekście zabezpieczeń (HTTPS) w niektórych lub wszystkich obsługiwanych przeglądarkach.
Poniżej znajduje się mapa, która może wskazać bieżącą lokalizację urządzenia użytkownika.
Poniższy przykład zawiera cały kod potrzebny do utworzenia tej mapy.
TypeScript
// 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;
Zobacz próbkę
Co to jest geolokalizacja?
Geolokalizacja określa położenie geograficzne urządzenia komputerowego przy użyciu różnych mechanizmów zbierania danych. Zwykle większość usług geolokalizacji używa sieci adresów routingu lub wewnętrznych układów GPS w celu określenia tej lokalizacji. Geolokalizacja to interfejsu API przeznaczonego do konkretnego urządzenia. Oznacza to, że przeglądarki lub urządzenia muszą obsługiwać geolokalizację, aby korzystać w aplikacjach internetowych.
Standard geolokalizacji W3C
Aplikacje, które chcą korzystać z geolokalizacji, muszą obsługiwać
Standard geolokalizacji W3C. Zwróć uwagę, że
przykładowy kod powyżej określa lokalizację urządzenia przez W3C
Interfejs API navigator.geolocation
.
Czasami strony internetowe używają adresów IP do wykrywania lokalizacji urządzenia, ale tylko wtedy, przybliżone oszacowanie tej lokalizacji. Interfejsy API zgodne ze standardem W3C są najbardziej w pełni obsługiwane i najdokładniejsze, więc powinny być mają wyższy priorytet niż inne metody geolokalizacji.