Javascript 强制OpenLayers标记层在顶部绘制,并在底部标记层
正如标题中所指出的,我想知道如何强制OpenLayers标记层在顶部绘制,并在下面标记层。我有一个OSM底图和一个包含标签的可选层Javascript 强制OpenLayers标记层在顶部绘制,并在底部标记层,javascript,openlayers,Javascript,Openlayers,正如标题中所指出的,我想知道如何强制OpenLayers标记层在顶部绘制,并在下面标记层。我有一个OSM底图和一个包含标签的可选层 所以我就这样做了,我创建了一个新的js文件,但没有成功。我花了两天时间试着做这件事,但没有任何结果,有人能帮我吗?谢谢你的回复。因此,我使用的代码如下: 对于底图和标记层(也可选择) 在与“我的HTML”页面中的按钮相关的函数(在键入logitude和latitude后添加标记的函数)中: 因此,标记显示出来了,但它位于SelectABLE标记层下,我希望我非常清楚
所以我就这样做了,我创建了一个新的js文件,但没有成功。我花了两天时间试着做这件事,但没有任何结果,有人能帮我吗?谢谢你的回复。因此,我使用的代码如下: 对于底图和标记层(也可选择) 在与“我的HTML”页面中的按钮相关的函数(在键入logitude和latitude后添加标记的函数)中:
因此,标记显示出来了,但它位于SelectABLE标记层下,我希望我非常清楚,从您提供的信息来看,不可能知道发生了什么,需要一个JSFIDLE或完整的代码示例来重现问题。但是一旦注释,通常不推荐使用标记,您应该使用带有图形的普通Feature.Vector,而不是标记,然后将按照图层添加到地图的顺序绘制图层。
map = new OpenLayers.Map('map',{controls: [new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher({'ascending':false}),
new OpenLayers.Control.ScaleLine(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.OverviewMap(),
new OpenLayers.Control.KeyboardDefaults()],
numZoomLevels: 30,
projection: mercator,
displayProjection: geographic,
units: "m",
extent: indoor
});
var style = new OpenLayers.StyleMap({
"default": new OpenLayers.Style({
fillColor: "#ff9544",
fillOpacity: 0.9,
strokeColor: "#fc5411",
strokeWidth: 1,
//strokeDashstyle: "dash",
label: "${name}",
// labelAlign: "cc",
fontColor: "#0000",
fontOpacity: 1,
fontFamily: "sans-serif",
})})
var layerLocalisation = new OpenLayers.Layer.Vector("Localisations",{isBaseLayer: false,visibility : true});
var layer = new OpenLayers.Layer.Vector("Bati", {
strategies: [new OpenLayers.Strategy.Fixed()],
styleMap: style,
protocol: new OpenLayers.Protocol.HTTP({
url: "data/gml/bati.xml",
format: new OpenLayers.Format.GML(),
projection: mercator
})
});
var gmap = new OpenLayers.Layer.Google(
"Google Streets", // the default
{numZoomLevels: 30, visibility: false}
);
map.addLayers([gmap,layer,layerLocalisation]);
function locate()
{
var coox = document.getElementById("idlong").value;
//alert(coox);
var cooy = document.getElementById("idlat").value;
var coo1 = new OpenLayers.LonLat(coox, cooy).transform(geographic,mercator);
var point1 = new OpenLayers.Geometry.Point(coo1.lon,coo1.lat);
var featurePoint1 = new OpenLayers.Feature.Vector(
point1,
{ description: 'info' },
{ externalGraphic: 'OpenLayers/img/marker-gold.png', graphicHeight: 25, graphicWidth: 21, graphicXOffset: -12, graphicYOffset: -25 }
);
layerLocalisation.addFeatures([featurePoint1]);
// map.addLayers([vectorLayer1]);
map.setCenter(coo1,18);
}