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

#javascript #openlayers

#javascript #openlayers

Вопрос:

Я отрисовываю карту с помощью 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 просто игнорируется сценарием, есть идеи, почему?

Комментарии:

1. Если кому-то интересно, вам нужно указать zIndex ПОСЛЕ добавления слоев на карту map.addLayers( [UserRoute, markers] ); markers.setZIndex( 1001 ); UserRoute.setZIndex( 1000); и это работает просто отлично 🙂

2. Здорово, что вы нашли решение. 🙂 Поместите его в качестве ответа и отметьте как решение для других, чтобы легко увидеть, что оно решено.

3. я просто не мог сделать это раньше, потому что я не могу отвечать на собственные вопросы в течение 8 часов 😉

Ответ №1:

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

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

и это работает просто отлично 🙂

Комментарии:

1. Как вы сказали, «вам нужно указать zIndex ПОСЛЕ добавления слоев на карту» сделал свое дело! Спасибо!