Openlayers zIndex для маркеров и векторов

Я визуализирую карту с помощью OSM, и у меня возникла серьезная проблема с настройкой zIndex для элементов страницы.

Часть JS выглядит так:

var userRoute = new OpenLayers.Layer.Vector( "KML", {
    sphericalMercator : true,
    styleMap: styleMap,
    rendererOptions: { zIndexing: true }
} );

var markers = new OpenLayers.Layer.Markers( "Markers", {
    sphericalMercator : true,
    rendererOptions: { zIndexing: true }
} );

markers.setZIndex( 500 );
userRoute.setZIndex( 200 );

Теперь при разборе файла KML для первого элемента я установил

var startFlag = new OpenLayers.Icon( '/start_flag_2.png', new OpenLayers.Size( 23, 22 ) );
markers.addMarker( new OpenLayers.Marker( latlon, startFlag ) )

То же самое касается последнего элемента. :

var stopFlag = new OpenLayers.Icon( '/stop_flag_2.png', new OpenLayers.Size( 23, 22 ) );
markers.addMarker( new OpenLayers.Marker( latlon, stopFlag ) )

Настройка zIndex просто игнорируется скриптом, есть идеи, почему?


person kamil    schedule 28.10.2011    source источник
comment
Если кому-то интересно, нужно указать zIndex ПОСЛЕ добавления слоев на карту map.addLayers([userRoute, markers]); маркеры.setZIndex(1001); userRoute.setZIndex(1000); и работает нормально :)   -  person kamil    schedule 28.10.2011
comment
Отлично, что вы нашли решение. :-) Поместите это как ответ и отметьте его как решение, чтобы другие могли легко увидеть, что оно решено.   -  person Niklas Wulff    schedule 31.10.2011
comment
я просто не мог сделать это раньше, потому что я не могу отвечать на свои вопросы в течение 8 часов;)   -  person kamil    schedule 31.10.2011


Ответы (1)


Если кому интересно, нужно указать zIndex ПОСЛЕ добавления слоев на карту

map.addLayers( [userRoute, markers] ); 
markers.setZIndex( 1001 ); 
userRoute.setZIndex( 1000 ); 

и работает нормально :)

person kamil    schedule 31.10.2011
comment
Как вы сказали, вам нужно указать zIndex ПОСЛЕ того, как добавление слоев на карту сделало свое дело! Спасибо! - person wondim; 28.05.2015