Я пытаюсь использовать карту OpenLayers в SVG в ситуации, когда я хотел бы, чтобы SVG-элементы отображались поверх / перед картой.Я создал простой тестовый пример на основе учебника OpenLayers:
<!DOCTYPE html>
<html>
<head>
<title>Working with Openlayers</title>
<link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css" type="text/css">
<!-- Openlayers CSS file-->
<style type="text/css">
#map{
width:100%;
height:600px;
}
</style>
<!--Basic styling for map div,
if height is not defined the div will show up with 0 px height -->
</head>
<body>
<svg width="800" height="500">
<rect width="600" height="300" style="fill:rgb(0,255,255);stroke-width:3;stroke:rgb(0,0,0)" />
<foreignObject height="300" id="_MapPOC.7-foreignObject" width="600" y="100" x="100">
<div id="map">
<!-- Your map will be shown inside this div-->
</div>
</foreignObject>
<rect width="600" height="300" x="200" y="200" style="fill:rgb(255,255,0);stroke-width:3;stroke:rgb(0,0,0)" />
Sorry, your browser does not support inline SVG.
</svg>
</body>
<script src="https://openlayers.org/en/v4.6.5/build/ol.js" type="text/javascript"></script>
<!-- Openlayesr JS fIle -->
<script type="text/javascript" src="map.js" type="text/javascript"></script>
<!-- Our map file -->
</html>
В этом примере первый (голубой) прямоугольник должен появиться сзади, а затем карта (сторонний объект) должнапоявляется посередине, а второй (желтый) прямоугольник должен отображаться сверху.
Однако, когда я просматриваю страницу, карта отображается поверх голубого и желтого прямоугольника.
Если я изменю содержимое стороннего объекта на обычный HTML вместо карты, то порядок будет работать, как и ожидалось.Только когда карта OpenLayers встроена в сторонний объект, она появляется над всем остальным, несмотря на порядок элементов SVG.
Я хотел бы знать, если кто-то знает, как я могу заставить карту выглядеть правильно упорядоченной вэлементы SVG?
Я использую Chrome версии 76.0.3809.132 (официальная сборка) (64-разрядная версия) в Windows 10.