我有一个按钮来激活地理定位。一旦我点击它,我想激活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);
答案 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);
})