Динамически добавляйте слои в MapSettingsControl, чтобы я мог переключать видимость там. Когда я пытался добавить слой в mapSettingControl, он был отключен.
Фон:
У меня есть веб-приложение, разработанное с использованием листовки. У меня есть 5 слоев, как показано на рисунке-1. Работает нормально в листовке. Сейчас я использую Havas Maps API для разработки того же веб-приложения.
Как я это сделал в Leaflet:
Я добавляю их как наложения карты при добавлении элемента управления слоями, т.е.
let layerControl = L.control.layers(baseMaps, overlayMaps).addTo(map);
, когда мне нужно добавитьОверлей в слое управления динамически Я использую следующее:
layerControl.addOverlay(somelayer, "layer name");
Это прекрасно работает.
Как я делаюиспользуя Here Maps js api:
Поскольку у меня есть пять слоев, два слоя кластера, а два слоя маркера и один геойсон. Я попытался применить тот же подход, создав GROUP для пяти слоев и добавив их в слои элементов управления настройками карты.
public clusterGroup1 = new H.map.Group();
public clusterGroup2 = new H.map.Group();
public markerGroup1 = new H.map.Group();
public markerGroup2 = new H.map.Group();
public boundary = new H.map.Group();
создал пользовательский интерфейс настройки карты:
this.customizedMapSetting = new H.ui.MapSettingsControl({
baseLayers: [{
label: "Normal", layer: defaultLayers.vector.normal.map
}],
layers: [{
label: "Cluster-1",
layer: this.clusterGroup1
},
{
label: "Cluster-2",
layer: this.clusterGroup2
},
{
label: "Marker-1",
layer: this.markerGroup1
},
{
label: "Marker-2",
layer: this.markerGroup2
},
{
label: "Geojson",
layer: this.boundary
}]
});
this.customizedMapSetting.setAlignment('top-right');
ui.addControl("customized", this.customizedMapSetting);
Я добавляю маркеры в такую группу:
dataArray.forEach(data=> {
let lat = data.latlng[0];
let lng = data.latlng[1];
var marker = new H.map.Marker({ lat: lat, lng: lng }, { icon: icon});
this.markerGroup1.addObject(marker);
});
Постановка задачи
Я не могу получить эту картуНастройкаUI работает для моих слоев.
Как я могу добавить кластерные слои в MapSettingControl, чтобы я мог переключать (показывать / скрывать) их? (Я думаю, что я не использую правильный подход группы) Когда я добавляю их как map.addLayer (clusterLayer), все работает нормально.
Как мне динамически добавлять слой в MapSettingControl? Возможная альтернатива листовки:
layerControl.addOverlay(somelayer, "layer name");