我正在研究https://openlayers.org/en/latest/examples/gpx.html上的openlayers 5.x的GPX源示例
我能够成功加载我的GPX文件并将其显示在地图上,但是我无法获得它的范围来知道最小/最大纬度和经度以使其动态地适应地图。
这是我的代码(与示例相同):
run.py
GPX文件可以正确显示,但是我无法获得调整地图大小以进行缩放的程度。我尝试过:
var GpxVector = new VectorLayer({
source: new VectorSource({
url: 'https://host.domain.com/filename.gpx',
format: new GPX(),
}),
style: function(feature) {
return GpxStyle[feature.getGeometry().getType()];
}
});
map.addLayer(GpxVector);
没有任何可解析的功能:
console.log(GpxVector.getSource().getFeatures());
请注意,来源已在此处,并在地图上正确显示:
length: 0
__proto__: Array(0)
给予:
console.log(GpxVector.getSource());
但没有范围:
c {disposed_: false, pendingRemovals_: {…}, dispatching_: {…}, listeners_: {…}, revision_: 0, …}
给予:
console.log(GpxVector.getSource().getExtent());
VectorLayer也没有范围:
[Infinity, Infinity, -Infinity, -Infinity]
给予:
console.log(GpxVector.getExtent());
有人可以帮助我,告诉我如何访问GPX文件的范围或至少它的要点,以便我自己计算吗?
任何帮助将不胜感激!
答案 0 :(得分:1)
除非图层在地图上可见,否则不会加载源。如果您设置任意的打开中心并放大视图,则源将被加载,然后您可以安装:
// fit when the source loads
GpxVector.getSource().on('addfeature', function(){
map.getView().fit(GpxVector.getSource().getExtent());
});
// open the view to force a load
map.getView().setCenter([0, 0]);
map.getView().setZoom(0);