【发布时间】:2013-11-04 19:05:55
【问题描述】:
编辑:我已在 GitHub 上为此提交了错误票:https://github.com/openlayers/ol2/issues/1167
我正在使用 OpenLayers 开展一个项目,由于缺乏良好的文档,我发现这种体验非常痛苦。我已经按照http://dev.openlayers.org/releases/OpenLayers-2.13.1/examples/ordering.html 此处的示例在地图上使用 z 排序创建图标。但是,我也在http://openlayers.org/dev/examples/vector-features-with-text.html 使用了该技术的一种变体来为向量创建标签。不幸的是,OpenLayers 在绘制标签时似乎不尊重 z 排序属性。
请注意绿色图标位于灰色图标之上(正确),但绿色标签位于灰色标签下方(不正确。)是否有解决方法?
这是我的图层代码:
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]);
【问题讨论】:
-
我对标签的 z 排序没有问题。请提供
code。可能只是您的“技术变化”出了点问题。 -
感谢您的回复;我已经用我的代码更新了帖子。
-
2011 年似乎也有人问过这个问题。但没有答案。 :(lists.osgeo.org/pipermail/openlayers-users/2011-March/…
标签: javascript gis openlayers