2013-03-22 81 views
1

G'day!
我想为我的OpenLayers地图上的每个标记添加一个独特的(css-)类,但我不知道该如何!我尝试了几乎所有的东西,并在forums of OpenStreetMap上发布了这个问题(因为那里的人对OpenLayers非常熟悉)。
这是我写的添加标记功能:OpenLayers:添加(css-)类到标记?

 

    function ownMarker(lon,lat,icon,markerid) { 
     var size = new OpenLayers.Size(38,58); 
     var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); 
     var element = new OpenLayers.Element.addClass('div', 'test'); 
     var icon = new OpenLayers.Icon('images/marker/'+ icon +'.png', size, offset); 
     var marker = new OpenLayers.Marker((new OpenLayers.LonLat(lon, lat).transform(proj4326, projmerc)),icon) 
     marker.id = markerid; 
     marker.events.register("mousedown", marker, function() { 
      if(this.id != 'home') { 
       currentID = this.id; 
       $('.activeResult').removeClass('activeResult'); 
       $('#results a[href$=' + this.id + ']').addClass("activeResult"); 
       showContent($(".nav a:first-child").attr("href")); 
       $(".nav a:first-child").addClass("activeContent") 
       if(contentOpen == false){ 
        $("#container").show(); 
        $(".frame").animate({left: 0}); 
        contentOpen = true; 
       } 
       tempLatitude = $('#results a[href$=' + this.id + ']').attr("lat"); 
       tempLongitude = $('#results a[href$=' + this.id + ']').attr("lon"); 
       targetLatitude = $('#results a[href$=' + this.id + ']').attr("lat"); 
       targetLongitude = $('#results a[href$=' + this.id + ']').attr("lon"); 
       ownPanTo(tempLongitude, tempLatitude); 
       console.log(this.id); 
      } 
     }); 
     markers.addMarker(marker); 
    } 

正如你可以在第5行看到的,我已经尝试过的类添加到标记 - 没有成功!

请帮帮我! :)

干杯!

回答

0

也许答案太明显了:OpenLayers图标首先不是HTML元素,但是您可以访问在地图上绘制时将成为图标一部分的HTML元素:http://dev.openlayers.org/docs/files/OpenLayers/Icon-js.html#OpenLayers.Icon.imageDiv(即不当我在www.openlayers.org上使用api文档的第一个链接时,会出现什么奇怪的现象),所以可以这样解决这个问题:

icon.imageDiv.className += " my_icon_class";