【技术】Geolocation: Displaying User or Device Position on Maps

Overview
This tutorial shows you how to display the geographic location of a user or device on a Google map, using your browser’s HTML5 Geolocation feature along with the Maps JavaScript API.
Below is a map that can identify your present location.
The sample below shows the entire code you need to create this map.
// 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. var 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; // Try HTML5 geolocation. if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var pos = { lat: position.coords.latitude, lng: position.coords.longitude }; infoWindow.setPosition(pos); infoWindow.setContent(’Location found.’); infoWindow.open(map); map.setCenter(pos); }, function() { 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); }
<div id="map"></div>
/* Always set the map height explicitly to define the size of the div * element that contains the map. */ #map { height: 100%; } /* Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; }
<!-- Replace the value of the key parameter with your own API key. --> <script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap"> </script>

Try it yourself
You can experiment with this code in JSFiddle by clicking the <> icon in the top-right corner of the code window.
<!DOCTYPE html> <html> <head> <title>Geolocation</title> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> <style> /* Always set the map height explicitly to define the size of the div * element that contains the map. */ #map { height: 100%; } /* Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; } </style> </head> <body> <div id="map"></div> <script> // 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. var 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; // Try HTML5 geolocation. if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var pos = { lat: position.coords.latitude, lng: position.coords.longitude }; infoWindow.setPosition(pos); infoWindow.setContent(’Location found.’); infoWindow.open(map); map.setCenter(pos); }, function() { 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); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"> </script> </body> </html>

What is Geolocation?
Geolocation refers to the identification of the geographic location of a user or computing device via a variety of data collection mechanisms. Typically, most geolocation services use network routing addresses or internal GPS devices to determine this location. Geolocation is a device-specific API. This means that browsers or devices must support geolocation in order to use it through web applications.

W3C Geolocation standard
Applications that want to perform geolocation must support the W3C Geolocation standard. Notice that the sample code above determines the user’s location through the W3C navigator.geolocation property.
Some browsers use IP addresses to detect a user’s location. However, it may only provide a rough estimate of a user’s location. The W3C approach is the easiest and most fully-supported so it should be prioritized over other geolocation methods.

The Sensor Parameter
The Maps JavaScript API previously required the sensor parameter to indicate whether your application used a sensor to determine the user’s location. This parameter is no longer required.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see our Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated February 28, 2019.
Ask a question under the google-maps tag.
Fork our samples and try them yourself.
Read about the latest updates, customer stories, and tips.
Something wrong? Send us a bug report!