【问题标题】:OpenLayers vector layer being displayed with offsetOpenLayers 矢量图层以偏移量显示
【发布时间】:2016-01-24 11:47:59
【问题描述】:

我正在向使用 OpenLayers 2.13 的地图解决方案添加新功能。 此解决方案显示挪威上空的特征,因此我们使用 UTM33N (EPSG:32633) 投影。

目前我正在尝试将可选择/工具提示功能添加到新图层 应该显示 GPS 轨迹(线串) 该解决方案已经具有类似的“可选”功能 它的几个层。这些层作为数组添加到 OpenLayers.Control.SelectFeature。

在我将 GPS 图层添加到 SelectFeature 之前,我可以看到它正在显示 正确地在地图和正确的位置。 (图一)

在设置地图的过程中,我将 GPS 图层添加到内部的 SelectFeature 控件的图层中 一个定制的 TooltipControl:

tooltipControl.getSelectFeatureControl().selectFeatureControl.layers.push(gpsLayer);

但是,当我将它添加到 SelectFeature 控件时,它的显示位置与应有的位置有相当大的偏移。 (图2) 偏移量实际上取决于缩放级别,因为当我放大特征时,它们会接近它们的正确位置,但仍然不正确。

通过检查 DOM,我可以看到在将 GPS 层添加到 SelectFeature 控件之前 该图层在名为“OpenLayers_Layer_Vector_55”的 div 中渲染。平移时 地图,div的样式正在改变,更具体地说是“left”和“top”属性 正在更改 div 以确保在正确的位置呈现线串。

将其添加到 SelectFeature 后,它会在名为“OpenLayers_Layer_Vector_RootContainer_283”的 div 中呈现 以及所有其他可选图层。现在 GPS 图层未正确渲染 地图上的位置了。 OpenLayers 仍在更新 Vector_55 div 的“left”和“top”属性 当我平移时,但 GPS 层不受此影响,因为它现在包含在 RootContainer_283 div 中。

如何将 GPS 图层渲染到正确的位置,并且仍然保留在 SelectFeature 控件中?

图像 1 - 正确渲染:

图像 2 - 不正确的渲染:

提前致谢!

【问题讨论】:

  • 偏移量有多大?米,公里?您使用的是哪些投影?
  • 偏移量实际上取决于缩放级别。当我放大时,这些特征接近它们的正确位置,但仍然不正确。使用的投影是 EPSG:32633 (UTM33N)。
  • OpenLayers 肯定能够使用 selectFeature 控件处理多个矢量图层,所以问题出在其他地方。也许在自定义 selectFeature 控件中?

标签: javascript openlayers


【解决方案1】:

经过数小时的搜索,我终于发现 GPS 层在初始化时将其“比率”设置为 1.2。

这个层曾经是一个 WMS 层(继承自 Grid),所以设置它的比率意味着:

ratio {Float} 仅在单图块模式下使用,它指定单个图块大小与地图大小的比率。

但是对于向量层来说,比率意味着别的东西:

ratio {Float} 这指定了矢量图层特征的可见性大小与地图大小的比率。

默认比率为 1,它被渲染在正确的位置!感谢评论者的意见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多