2013-06-08 1 views
0
function init_map() { 
    var map, layer; 
    map = new OpenLayers.Map('map'); 
    layer = new OpenLayers.Layer.WMS("OpenLayers WMS", 
     "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'}); 
    map.addLayer(layer); 
    map.setCenter(new OpenLayers.LonLat(43.5, 40), 10); 
    var size = new OpenLayers.Size(21,25); 
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); 
    var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset); 
    var markers = new OpenLayers.Layer.Markers("Objects"); 
    map.addControl(new OpenLayers.Control.LayerSwitcher()); 
    map.addLayer(markers); 
    $.ajax({ 
     type: "GET", 
     url: "/rest/displaymap/getMarkers/", 
     dataType: "json", 
     error: function() { 
      console.log('failed to retrieve data'); 
     }, 
     success: function(d) { 
      console.log(d); 
      var i; 
      for(i=0; i<d.length; i++) { 
       var mrk = new OpenLayers.Marker(new OpenLayers.LonLat(d[i]['objectLon'],d[i]['objectLat']), icon); 
       markers.addMarker(mrk); 
      }  
     } 
    }); 
} 

^my Init() функция. У меня простой слой с маркерами и слоем плитки. Вернувшийся json прав. Но вместо всего отображается только один маркер. Не знаю, где проблема. Помоги пожалуйста!Trouble with OpenLayers.Layer.Markers - только последний добавленный маркер указан на карте

ответ

0

Вы должны использовать значок.clone() в этом случае. В Marker documentation написано:

Обратите внимание, что если вы передадите значок в конструктор маркера, он будет использовать этот значок и использовать его. Это означает, что вы не должны делиться значками между маркерами - вы используете их один раз, но вы должны клонировать() для любых дополнительных маркеров, используя тот же значок.

+0

спасибо, сейчас все в порядке с icon.clone() – Arti88

Смежные вопросы