2014-08-28 111 views
0

正如标题中所示,我想知道如何强制OpenLayers标记图层顶部绘制,并在底部绘制标记图层。我有一个OSM baseMap和一个包含标签的可选图层。强制OpenLayers标记层在顶部绘制,并在底部标记图层

所以我跟着this link,我创建了一个新的js文件,但徒劳无功。我花了2天试图做到没有任何结果,任何人都可以帮助我吗?

+0

从您所提供的信息,不可能知道发生了什么,需要一个jsFiddle或完整的代码样本来重现问题。一旦发表评论,通常不会使用标记,并且应该使用带有图形而不是标记的普通Feature.Vector,然后按照它们添加到地图的顺序绘制图层。 – 2014-08-29 07:23:21

回答

0

感谢您的回复。所以我使用的代码如下:

为底图和标记层(它也是可选)

   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]); 

在我的HTML页面相关按钮的功能(函数输入后添加标记logitude和纬度):

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);   
     } 

所以标记显示,但是,它是selectabale标记层下,我希望我是那么清晰,