所以,我在Openlayers 3.9.0地图中关闭Geolocation功能的想法是有一个切换按钮,单击它时会停止跟踪并从地理定位图层中删除该功能
geolocation.setTracking('false');
featuresOverlay.getSource().clear();
然后再次打开它会打开跟踪,向地理位置图层添加一个要素,设置其坐标并重新定位地图
geolocation.setTracking('true');
featuresOverlay.getSource().addFeature(positionFeature);
var coordinates = geolocation.getPosition();
positionFeature.setGeometry(coordinates ? new ol.geom.Point(coordinates) : null);
view.setCenter(coordinates);
嗯,这在技术上并不算是打开/关闭地理位置,因为它删除了所有的视觉元素,它实际上并没有打开/关闭API。是否存在这种可能性,或者上述情况是否足够?
答案 0 :(得分:4)
经过一次小改动后确实如此。
假设代码中的geolocation
引用ol.Geolocation
的实例,调用geolocation.setTracking(false)
将在浏览器地理位置API上调用geolocation
clearWatch
。相关代码为here。
但是,setTracking
需要一个布尔值。您发送字符串'false'
,该字符串被解释为真值(因为它是非空字符串)。从setTracking
参数中删除引号,它应该按预期工作。