2015-06-22 339 views
0

我有一個按鈕來激活地理定位。一旦我點擊它,我想激活geolocalisation我也想縮放位置,但只有當我點擊按鈕。我的問題是第一次點擊,該工具返回一個未定義的位置,我不得不再次點擊以獲取該位置。我想詢問社區是否有解決問題的方法。Openlayers 3地理位置,居中位置onclick

見的jsfiddle我已創建:http://jsfiddle.net/alex_caron88/m6xbv0dt/8/

下面的代碼的重要組成部分:

// activate geolocate device and get the zoom on the position 
var geolocateBtn = document.getElementById('geolocate'); 
    geolocateBtn.addEventListener('click', function() { 
     geolocation.setTracking(true); // Start position tracking 
     map.on('postcompose', render); 
     // while (geolocation.getPosition() == undefined){ 
      // console.log("while = " + geolocation.getPosition()) 
     // } 
     map.getView().setCenter(geolocation.getPosition()) 
    }, false); 

回答

0

我跟着OL3-例子。我將view.setCenter設置在'change:position'事件中,而不是'postcompose'中。也許這會解決它。 我沒有檢查你的代碼,所以無法確定這是否符合你的要求。

var geolocateme = new ol.Geolocation({ 
    projection: view.getProjection() 
}); 
geolocateme.on('change:position', function() { 
    var coordinates = geolocateme.getPosition(); 
    positionFeature.setGeometry(coordinates ? new ol.geom.Point(coordinates) : null); 
    view.setCenter(coordinates); 
}) 
+0

這種方法的問題是,如果用戶決定去另外一個地方在地圖上,隨着位置的改變,它會返回到地理位置的位置。這是我想要避免的,我想要做的就是通過點擊地理位置按鈕 – FatAl

+0

來簡單地讓它恢復其位置,您可以添加geolocateme.setTracking(false);在setCenter之後...並且當用戶再次單擊按鈕時將該值重新設置爲true。或者使用複選框並將值true false用於跟蹤。像 geolocateme.setTracking(this.checked); – MichaelJS