ภาพรวม
บทแนะนำนี้จะแสดงวิธีแสดงตำแหน่งทางภูมิศาสตร์ของอุปกรณ์บน Google Maps โดยใช้ฟีเจอร์ตำแหน่งทางภูมิศาสตร์ HTML5 ของเบราว์เซอร์ร่วมกับ Maps JavaScript API สถานที่ตั้งทางภูมิศาสตร์จะแสดงก็ต่อเมื่อผู้ใช้อนุญาตการแชร์ตำแหน่งเท่านั้น
เมื่อผู้ใช้เรียกให้แสดงคำขอตำแหน่งทางภูมิศาสตร์ ผู้ใช้จะได้รับข้อความแจ้งจากเบราว์เซอร์เพื่อขอความยินยอมในการเข้าถึงข้อมูลตำแหน่งของอุปกรณ์ หากคำขอไม่สำเร็จ อาจเป็นเพราะสิทธิ์เข้าถึงตำแหน่งถูกปฏิเสธ หรืออุปกรณ์ไม่สามารถระบุตำแหน่งได้ ฟีเจอร์นี้ใช้ได้เฉพาะในบริบทที่ปลอดภัย (HTTPS) ในเบราว์เซอร์ที่รองรับบางรุ่นหรือทุกรุ่น
ด้านล่างคือแผนที่ที่ระบุตำแหน่งปัจจุบันของอุปกรณ์ของผู้ใช้
ตัวอย่างด้านล่างแสดงโค้ดทั้งหมดที่จําเป็นในการสร้างแผนที่นี้
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;
ลองใช้ตัวอย่าง
ตําแหน่งทางภูมิศาสตร์คืออะไร
การกำหนดตำแหน่งทางภูมิศาสตร์หมายถึงการระบุตำแหน่งทางภูมิศาสตร์ของอุปกรณ์คอมพิวเตอร์โดยใช้กลไกการเก็บรวบรวมข้อมูลต่างๆ โดยทั่วไป บริการระบุตำแหน่งทางภูมิศาสตร์ส่วนใหญ่จะใช้ที่อยู่การกำหนดเส้นทางของเครือข่ายหรือชิป GPS ภายในเพื่อระบุตำแหน่งนี้ ตำแหน่งทางภูมิศาสตร์เป็น API สำหรับอุปกรณ์โดยเฉพาะ ซึ่งหมายความว่าเบราว์เซอร์หรืออุปกรณ์ต้องรองรับการกำหนดตำแหน่งทางภูมิศาสตร์จึงจะใช้ผ่านเว็บแอปพลิเคชันได้
มาตรฐานตำแหน่งทางภูมิศาสตร์ของ W3C
แอปพลิเคชันที่ต้องการให้ระบุตำแหน่งทางภูมิศาสตร์ต้องรองรับมาตรฐานการระบุตำแหน่งทางภูมิศาสตร์ของ W3C โปรดทราบว่าตัวอย่างโค้ดด้านบนจะระบุตําแหน่งของอุปกรณ์ผ่าน W3C navigator.geolocation
API
บางครั้งเว็บไซต์อาจใช้ที่อยู่ IP เพื่อตรวจหาตำแหน่งของอุปกรณ์ แต่ข้อมูลนี้อาจให้ค่าประมาณตำแหน่งคร่าวๆ เท่านั้น API มาตรฐาน W3C ได้รับการรองรับอย่างเต็มรูปแบบและแม่นยำที่สุด จึงควรให้ความสำคัญกับ API เหล่านี้มากกว่าวิธีการระบุตำแหน่งทางภูมิศาสตร์อื่นๆ