gpt4 book ai didi

javascript - 特征标签上的 OpenLayers 矢量层 z 排序

转载 作者:行者123 更新时间:2023-12-04 19:51:27 24 4
gpt4 key购买 nike

编辑: 我已经在 GitHub 上为此提交了错误票:https://github.com/openlayers/ol2/issues/1167

我正在使用 OpenLayers 进行一个项目,由于缺乏良好的文档,我发现这种体验非常痛苦。我在这里按照示例 http://dev.openlayers.org/releases/OpenLayers-2.13.1/examples/ordering.html使用 z 顺序在 map 上创建图标。然而,我在这里也使用了该技术的变体 http://openlayers.org/dev/examples/vector-features-with-text.html为向量创建标签。不幸的是,OpenLayers 在绘制标签时似乎不遵守 z 顺序属性。

OpenLayers incorrect z-ordering

请注意绿色图标如何位于灰色图标之上(正确),但绿色标签位于灰色标签下方(不正确)。是否有解决方法?

这是我的图层代码:

    this.vehicleLayer = new OpenLayers.Layer.Vector("vehicles", {
// The zIndex is taken from the zIndex attribute of the features
styleMap: new OpenLayers.StyleMap({ 'default': {
graphicZIndex: "${zIndex}"
}}),
// enable the indexer by setting zIndexing to true
rendererOptions: {zIndexing: true}
});

这是我的图标代码:

    iconPrefix = mapView.iconProvider.prefixMapping(vehicle.get('icon'));
imgUrl = mapView.iconProvider.getIconURL(iconPrefix, trackingStatus, position.get('track'));

//Vehicle icon
this.marker = new OpenLayers.Feature.Vector(point, null, {
'graphicZIndex': this.zIndexState[trackingStatus],
'externalGraphic': imgUrl,
'pointRadius': 8,
'cursor': 'pointer',
'clickable': true,
'title': label_text
});

this.marker.attributes = {
'vehicleMapView': this
};

//tail label
if (App.Settings.get('labels')) {
this.marker.style = _.extend(this.marker.style, {
pointerEvents: "visiblePainted",
label: label_text,
fontColor: trackingStatus !== 'inactive' ? "#222222" : "white",
fontSize: "12px",
fontFamily: "Courier New, monospace",
fontWeight: "bold",
labelAlign: "lm",
labelXOffset:12,
labelOutlineColor: this.statusToColor[trackingStatus],
labelOutlineWidth: 2.5
});
this.marker.attributes = _.extend(this.marker.attributes, {label: label_text});

}
layer.addFeatures([this.marker]);

最佳答案

一些您可以尝试的事情,如果您还没有尝试的话:

我注意到您在第一个向量上启用了 rendererOptions 而不是在第二个向量上。您也可以尝试将其添加到第二层。

还尝试将引号从 "${zIndex}" 中删除为简单的 ${zIndex},因为它可能需要一个整数。

关于javascript - 特征标签上的 OpenLayers 矢量层 z 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19775132/

24 4 0