Geoxml3 GroundOverlay zIndex

Есть ли способ изменить zIndex наземного оверлея?

С помощью Geoxml3 я анализирую два файла KML, один из которых содержит многоугольник, а другой — наземный оверлей. Все идет идеально, за исключением того факта, что я хочу, чтобы мой GroundOverlay НАД полигоном, потому что теперь он появляется за полигоном.

Обновление: это мой код

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Geoxml3</title>
<style>
    html{height:100%;}
    body{height:100%;margin:0px;}
    #map_canvas{height: 90%;width: 90%;}
</style>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://geoxml3.googlecode.com/svn/branches/polys/geoxml3.js"></script>
<script type="text/javascript" src="http://geoxml3.googlecode.com/svn/trunk/ProjectedOverlay.js">
</script>
</head>
<body>
<div id="map_canvas"></div>
</div>
<script type="text/javascript">
var geoXml=null, map=null;

function initialize() {
    var myOptions = {
        center: new google.maps.LatLng(39.397, -100.644),
        zoom: 4,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    geoXml = new geoXML3.parser({
        map: map,
        zoom: true,
        createOverlay: addMyOverlay
    });

    geoXml.parse(['groundOverlay.kml','polygon.kml']);

    function addMyOverlay(placemark,doc){
        //How to change the the GroundOverlay zIndex
        var groundOverlay = geoXml.createOverlay(placemark);
        return groundOverlay;
    };
};
google.maps.event.addDomListener(window, 'load', initialize);

</script>
</body>
</html>

Тест находится здесь: http://jorgeluisperez.260mb.net/geoxml/


person cholu1217    schedule 17.06.2015    source источник
comment
Как выглядит ваш существующий код? Предоставьте минимальный, полный, проверенный и удобочитаемый пример, демонстрирующий проблему.   -  person geocodezip    schedule 18.06.2015
comment
Обновил вопрос! спасибо   -  person cholu1217    schedule 18.06.2015


Ответы (2)


Вероятно, самым простым способом было бы указать zIndex для GroundOverlay после загрузки карты:

google.maps.event.addListenerOnce(map, 'idle', function(){
      var overlayDiv = document.getElementById(groundOverlay.id_);
      overlayDiv.style.zIndex = '999';
      console.log(overlayDiv);
});  

Примечание. groundOverlay должен быть доступен из события.

Рабочий пример: Plunker

person Vadim Gremyachev    schedule 24.06.2015

Класс ProjectedOverlay, который используется для рендеринга GroundOverlays в geoxml3, прикрепляет наложения к overlayLayer. Это та же панель, в которой визуализируются полигоны. Класс OverlayView не поддерживает zIndex, а zIndex, поддерживаемый Polygons, конкретно указывает, что он хорош только между «полигонами». Возможно, порядок добавления полигонов по сравнению с GroundOverlay может изменить это, но быстрый тест не работает. Вы можете изменить код ProjectedOverlay, чтобы добавить оверлей к панели над overlayLayer.

из документации по MapPanes:

Этот объект содержит элементы DOM, в которых визуализируются наложения. Они перечислены ниже с «Панелью 0» внизу и «Панелью 4» вверху.

Характеристики

  • плавающая панель | Эта панель содержит информационное окно. Это прежде всего наложения карт. (Панель 4).
  • панель карты | Эта панель является самой нижней панелью и находится над плитками. Он может не получать события DOM. (Панель 0).
  • маркерСлой | Эта панель содержит маркеры. Он может не получать события DOM. (Панель 2).
  • наложениеСлой | Эта панель содержит полилинии, полигоны, наложения на землю и наложения слоев мозаичных элементов. Он может не получать события DOM. (Панель 1).
  • наложениеMouseTarget | Эта панель содержит элементы, которые получают события DOM. (Панель 3).
person geocodezip    schedule 21.06.2015