簡體   English   中英

如何使用google maps api獲得精確的位置?

[英]How can I get precise location with google maps api?

我正試圖在地圖上顯示用戶的當前位置。 使用HTML5地理位置,它要求用戶許可,我覺得很煩,我發現我可以通過直接使用谷歌地圖api繞過這個。

問題在於,使用任何一種解決方案,准確度都可以很好(300km關閉)。

HTML5解決方案

https://developers.google.com/maps/documentation/javascript/geolocation

這是谷歌提供的例子,它很好。 從瀏覽器到瀏覽器的准確度也會發生變化

谷歌地圖api解決方案

這是我達到的代碼。

function calculateZoomLevel(accuracy) {
    var equatorLength = 40075004; // in meters
    var mapWidth = 480; // in pixels
    var metersPerPixel = equatorLength / 4096;
    var zoomLevel = 1;
    while ((metersPerPixel * mapWidth) > accuracy) {
        metersPerPixel /= 2;
        zoomLevel++;
    }
    return Math.min(zoomLevel, 17);
}
function initMap() {
    var coords = new google.maps.LatLng(37.990832, 23.70332), accuracy = 0;
    $.post('https://www.googleapis.com/geolocation/v1/geolocate?key=MY_API_KEY').done(function(e) {
        coords = new google.maps.LatLng(e.location.lat, e.location.lng);
        accuracy = e.accuracy;
        map = new google.maps.Map(document.getElementById('map'), {
            zoom: calculateZoomLevel(accuracy),
            center: coords,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
        });
        new google.maps.Circle({
            center: coords,
            radius: accuracy,
            map: map,
            fillColor: '#ff0000',
            fillOpacity: .5,
            strokeColor: '#ff0000',
            strokeOpacity: .5
        });
    }).fail(function(e) {
        console.log('fail ajax post geolocation', e);
    });
}

問題是,我知道精度可以很好(10-30米),因為同時在同一個瀏覽器上我看到自己完全脫離谷歌的例子,我看到自己在普通谷歌地圖的我的位置頁。

因此,如果您不想以大量請求為代價捕獲和計算大多數可能的位置,或者您不希望自己的腳本連接到此api,這將是一個挑戰...創建一個循環閾值。 如果不合理的准確性,請回想一下您的功能。 含義:

   coords = new google.maps.LatLng(e.location.lat, e.location.lng);
   accuracy = e.accuracy;
var c = 0;
if (c<20){
     If (accuracy <100){
         .. do your stuff..
     }else{
         initMap();
         c++;
     }
}else{
     ...failed....
}

所以說明智......這會以明顯的方式增加你的要求。 你已被警告.....除非谷歌允許無限量的免費請求,當你讀這篇文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM