如何获取 GPX 文件的范围以将其显示在地图上(使用 openalyers)
How to get the extent of a GPX file to display it on a map (using openalyers)
我正在研究 openlayers 5.x 的 GPX 源代码示例,可在 https://openlayers.org/en/latest/examples/gpx.html
我能够成功加载我的 GPX 文件并将其显示在地图上,但我无法获得它的范围以了解 min/max 纬度和经度以使其在地图上动态适应。
这是我的代码(与示例相同):
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);
GPX 文件显示正确,但我无法获取其范围以调整地图大小以进行缩放。我试过:
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());
给出:
[Infinity, Infinity, -Infinity, -Infinity]
VectorLayer 也没有范围:
console.log(GpxVector.getExtent());
给出:
undefined
有人可以帮助我并告诉我如何访问 GPX 文件的范围或至少它的点以便我自己计算吗?
如有任何帮助,我们将不胜感激!
除非图层在地图上可见,否则不会加载源。如果你设置一个任意的打开中心并放大视图,源将加载然后你可以适应:
// 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);
我正在研究 openlayers 5.x 的 GPX 源代码示例,可在 https://openlayers.org/en/latest/examples/gpx.html
我能够成功加载我的 GPX 文件并将其显示在地图上,但我无法获得它的范围以了解 min/max 纬度和经度以使其在地图上动态适应。
这是我的代码(与示例相同):
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);
GPX 文件显示正确,但我无法获取其范围以调整地图大小以进行缩放。我试过:
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());
给出:
[Infinity, Infinity, -Infinity, -Infinity]
VectorLayer 也没有范围:
console.log(GpxVector.getExtent());
给出:
undefined
有人可以帮助我并告诉我如何访问 GPX 文件的范围或至少它的点以便我自己计算吗?
如有任何帮助,我们将不胜感激!
除非图层在地图上可见,否则不会加载源。如果你设置一个任意的打开中心并放大视图,源将加载然后你可以适应:
// 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);