#javascript #leaflet #bing-maps
#javascript #брошюра #bing-карты
Вопрос:
моя карта сгенерирована этим кодом (отредактирована после совета):
var BING_KEY = "My Bing Maps Key";
var osmUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
function show_karte(div_id, mittelpunkt, zoom, overlay, typ){
var bingLayer = L.tileLayer.bing({bingMapsKey: BING_KEY, maxZoom: 20, imagerySet: 'Aerial', attribution: 'amp;copy; 2019 Microsoft Corporation, Earthstar Geographics SIO'});
var bingLabelLayer = L.tileLayer.bing({bingMapsKey: BING_KEY, maxZoom: 20, imagerySet: 'AerialWithLabels', attribution: 'amp;copy; 2019 Microsoft Corporation, Earthstar Geographics SIO'});
var osmLayer = L.tileLayer(osmUrl, {maxZoom: 20, attribution: 'Map data amp;copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'});
var mittelpunkt = [mittelpunkt[1], mittelpunkt[0]]
var aktuellerLayer;
switch (typ) {
case 'A' : aktuellerLayer = bingLayer; break;
case 'L' : aktuellerLayer = bingLabelLayer; break;
case 'R' : aktuellerLayer = osmLayer;
};
var map = L.map(div_id,{fullscreenControl: true, layers: [aktuellerLayer]}).setView(mittelpunkt, zoom);
var overlayLayers = null;
var baseLayers = {"Straamp;szlig;enkarte": osmLayer, "Luftbild mit Straamp;szlig;ennamen": bingLabelLayer,"Luftbild": bingLayer};
var controls = L.control.layers(baseLayers, overlayLayers).addTo(map);
$.ajax(overlay).done(function(data) {
var data = JSON.parse(data);
L.geoJson(data,
{
});
});
};
«show_karte» вызывается на веб-сервере три раза, каждый раз с другим идентификатором div и первым параметром функции с:
<div class="bild_rechts" id="map" style="width:450px; height: 700px;">
<script type="text/javascript"> show_karte("map",[6.026173,50.816022],13,"neueFlaechen.geojson","L"); </script>
</div>
<div id="map1" style="width:450px; height: 700px;">
<script type="text/javascript"> show_karte("map1",[6.10428,50.76079],11,"konzentrationsflaechen.geojson","A"); </script>
</div>
<div id="map2" style="width:795px; height:1000px">
<script type="text/javascript">show_karte("map2",[6.10428,50.76079],12,"moeglicheFlaechen.geojson","R"); </script>
</div>
Во всех трех случаях я вижу элемент управления map, но ТОЛЬКО на третьей карте активирована опция. Кто-нибудь может сообщить об ошибке? — Спасибо за чтение кода!
Грус, вон
Комментарии:
1. Как выглядят два других вызова
show_karte()
?
Ответ №1:
Вы не можете повторно использовать свои слои на разных картах одновременно. Только последний сохранит слой.
Вам просто нужно дублировать ваши слои для каждой карты, например, переместив код их создания в вашу функцию show_carte.
Комментарии:
1. Тогда, пожалуйста, отредактируйте свой вопрос (вместо использования «ответа») и предоставьте MCVE.