Linuxword Global
当前位置: 建站相关 > Google Maps API – 取得目前經緯度並標記

取得使用者所在的經緯度除了可以使用 Google Maps 的 Geolocation API ,也可以透過網頁瀏覽器來實現,這篇文章將會介紹兩種取得所在位置經緯度的方法,接著使用地圖標記 Marker 標示在地圖上。

 

Geolocation API

前往 Google Cloud Platform Console,建立新的專案或是選擇現有的專案 ( 不知道怎麼做可以參考 Google Maps API - 網頁載入地圖 ( 起手式 ) ),接著點選上方「啟用 API 和服務」,在搜尋欄位搜尋「Directions API」,找到後點選並且啟用。

google-maps-20-get-current-position-01

接著我們簡單寫個 JavaScript,利用XMLHttpRequest的方法呼叫 Geolocation API,就能從 console 裡得到準確度 accuracy ( 公尺 ) 和經緯度資訊。( 至於準不準,看到文章最後你就知道了 )

範例:Geolocation API 取得所在位置經緯度

var geolocation = 'https://www.googleapis.com/geolocation/v1/geolocate?key=你的 API Key';
(function() {
    xhr = new XMLHttpRequest();
    xhr.open('POST', geolocation);
    xhr.onload = function () {
        var response = JSON.parse(this.responseText);
        console.log(response);
    }
    xhr.send();
})();

google-maps-20-get-current-position-02

navigator.geolocation

除了申請 Geolocation API 之外,我們還能使用一個更簡單的方法navigator.geolocation,這是單純透過瀏覽器取得使用者所在的地理位置資訊,取得的資訊都會存在 coords 裡,總共有下列幾個方法:

方法 說明
latitude 緯度
longitude 經度
accuracy 精確度 ( 公尺 )
altitude 海拔高度
altitudeAccuracy 海拔高度精確度
heading 方向 ( 正北的順時針方向 )
speed 速度

然而要取得這些數值,可以透過getCurrentPosition()或watchPosition()來取得,兩個的差別在於getCurrentPosition()僅會執行一次,而watchPosition()則會隨著裝置的位置移動而持續監測,舉例來說,當使用者打開具備下面這段程式碼的網頁,網頁就會不斷偵測使用者位置,並在 Google 地圖上標記一個 marker。

範例:navigator.geolocation 取得所在位置經緯度

var map, marker, lat, lng;
function initMap() {
    navigator.geolocation.watchPosition((position) => {
        console.log(position.coords);
        lat = position.coords.latitude;
        lng = position.coords.longitude;
        // 初始化地圖
        map = new google.maps.Map(document.getElementById('map'), {
            zoom: 18,
            center: { lat: lat, lng: lng }
        });
        marker = new google.maps.Marker({
            position: { lat: lat, lng: lng },
            map: map
        });
    });
}

google-maps-20-get-current-position-03

兩者差異

目前我自己實測起來,navigator.geolocation 比 Geolocation API 還來得準確,畢竟 navigator.geolocation 是把瀏覽器所有可用的資訊拿出來用 ( WiFi 位置、GPS、陀螺儀...等 ),然而 Geolocation API 看起來就只是透過 WiFi 的三角定位來判斷,下面的例子是同時用 navigator.geolocation 和 Geolocation API 在地圖上標記,相差真是十萬八千里...

範例:navigator.geolocation 取得所在位置經緯度

google-maps-20-get-current-position-04

小結

如果是使用手機,得到的位置相對而言就會更精準,甚至還會有海拔高度或指南針之類的訊息,但如果是使用 iPhone 或 iPad,那麼就只能透過 Safari 來實現,因為 iPhone 或 iPad 的 Chrome 並不支援 ( 安全性限制 ),總而言之,能取得自己的位置資訊,好像就能玩些「大地遊戲」的應用了,之後有時間再找時間做出來玩玩吧!

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2591 篇
  • 草稿数目: 22 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 13021 个
  • 注册用户: 139 人
  • 访问总量: 8,651,665 次
  • 最近更新: 2024年11月21日