Visão geral
Neste tutorial, mostramos como mostrar a localização geográfica de um dispositivo em um mapa do Google usando o recurso de geolocalização HTML5 do navegador e a API Maps JavaScript. A localização geográfica só vai aparecer se o usuário tiver permitido o compartilhamento de local.
Quando o usuário aciona a solicitação de geolocalização, ele recebe uma solicitação do navegador para conceder consentimento para acessar os dados de localização do dispositivo. Se a solicitação falhar, pode ser porque as permissões de localização foram negadas ou porque o dispositivo não conseguiu determinar a localização. Esse recurso está disponível apenas em contextos seguros (HTTPS), em alguns ou todos os navegadores compatíveis.
Abaixo está um mapa que pode identificar a localização atual do dispositivo do usuário.
O exemplo abaixo mostra o código inteiro para criar esse mapa.
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;
Testar amostra
O que é geolocalização?
A geolocalização se refere à identificação do local geográfico de um dispositivo de computação usando vários mecanismos de coleta de dados. Normalmente, a maioria dos serviços de geolocalização usa endereços de roteamento de rede ou chips internos de GPS para determinar esse local. A geolocalização é uma API específica do dispositivo. Isso significa que navegadores ou dispositivos precisam ser compatíveis com geolocalização para usar esse recurso em aplicativos da Web.
Padrão de geolocalização W3C
Para realizar a geolocalização, os aplicativos precisam ser compatíveis com o padrão de geolocalização W3C. O exemplo de código acima determina a localização do dispositivo com a API
navigator.geolocation
do W3C.
Às vezes, os sites usam endereços IP para detectar a localização de um dispositivo, mas isso pode fornecer apenas uma estimativa aproximada desse local. As APIs com padrão W3C são as que têm mais suporte e são mais precisas, então elas devem ter prioridade sobre outros métodos de geolocalização.