Openlayers 3 Geolocation,中心位置onclick

时间:2015-06-22 01:10:05

标签: javascript geolocation openlayers-3

我有一个按钮来激活地理定位。一旦我点击它,我想激活geolocalisation我也想放大位置,但只有当我点击按钮。我的问题是第一次点击,工具返回一个未定义的位置,我必须再次点击才能获得该位置。我想询问社区是否有针对我的问题的解决方法。

请参阅我创建的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);

1 个答案:

答案 0 :(得分:1)

我遵循了ol3-examples。我将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);
})