所以,我在 Openlayers 3.9.0 map 中关闭地理定位功能的想法是有一个切换按钮,当点击它时它会停止跟踪并从地理定位图层中删除该功能
geolocation.setTracking('false');
featuresOverlay.getSource().clear();
然后再次打开它,它会打开跟踪,向地理定位图层添加一个功能,设置其坐标并重新居中 map
geolocation.setTracking('true');
featuresOverlay.getSource().addFeature(positionFeature);
var coordinates = geolocation.getPosition();
positionFeature.setGeometry(coordinates ? new ol.geom.Point(coordinates) : null);
view.setCenter(coordinates);
嗯,这在技术上不算作打开/关闭地理定位,因为它删除了所有视觉元素,它实际上并没有打开/关闭 API。有没有这种可能,或者以上就够了?
最佳答案
当然可以,经过一个小改动。
假设代码中的 geolocation
引用了 ol.Geolocation
的实例,调用 geolocation.setTracking(false)
将使 geolocation
在浏览器的地理定位 API 上调用 clearWatch
。相关代码为here .
但是,setTracking
需要一个 bool 值。您发送字符串 'false'
,它被解释为真值(因为它是一个非空字符串)。从 setTracking
参数中移除引号,它应该会按预期工作。
关于geolocation - 关闭 Openlayers 3 地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33551349/