HERE 地图 "Choose View" - 我们可以删除选项吗?

HERE Maps "Choose View" - Can we remove options?

有没有办法让我们从 "Choose View" 菜单中删除选项?

根据我在网上看到的情况,它可能与图层有关,但我无法找到一个简单的示例并让它正确填充选项菜单。

例如,如果我们不想在底部显示 3 个选项并且不需要 "terrain" 地图?

更新:我尝试了下面由 HERE Developer support 提供的解决方案(手动删除了一些选项),但我最终在它下面有一行(而且它也没有描述如何删除地形图,所以如有任何额外帮助,我们将不胜感激!

或者,如果有一种方法不仅可以从 UI 菜单中删除选项,还可以完全从地图中完全删除图层和地图类型,那就更好了。谢谢!

你可以试试这个例子:

//get map settings
var mapSettings= ui.getControl('mapsettings');

//remove incidents options
mapSettings.setIncidentsLayer(false);

// remove traffic and public transit option
var traffic=mapSettings.getChildren()[1].getChildren()[1];
var publicTransit=mapSettings.getChildren()[1].getChildren()[2];
mapSettings.getChildren()[1].removeChild(traffic);
mapSettings.getChildren()[1].removeChild(publicTransit);

我在这里找到了另一个解决方案,它也删除了 "line":

let mapsettings = ui.getControl('mapsettings');
let menuEntries = mapsettings.getChildren()[1].getChildren();
menuEntries[0].getElement().style.borderBottom = 'none';
for (let i=1; i<menuEntries.length; i++)
    menuEntries[i].setVisibility(false);

为了去掉其中一个地图视图选项(如地形或卫星),我刚刚做了:

delete maptypes.terrain;

创建默认图层后。

这不是我 100% 的理想(因为我想完全阻止图层的创建),但据我所见,如果我们尝试,可能会更麻烦,而且收获也不大从头开始创建图层。

可以使用所需的图层列表创建自定义 MapSettingsControl 并将其显示在 UI 中。图层可以指定给class的构造函数。他们分为 2 组:

  • baseLayers

    单击这些将更改底图(工作方式类似于 "radio button")。

  • 层数

    除了其他图层和现有基础地图图层(工作方式类似于 "checkbox")之外,单击这些图层会将指定图层添加到地图中

ui.addControl('custom_settings_control', new H.ui.MapSettingsControl({
  baseLayers: [{
    label: 'Normal Map',
    layer: maptypes.vector.normal.map
  }, {
    label: 'Satellite',
    layer: maptypes.raster.satellite.map
  }],
  layers: []
}))

不指定"layers"时,不自动绘制分割线

如果您不想创建默认图层,请从您的代码中删除 platform.createDefaultLayers(...) 方法调用。

请注意,上述内容适用于 JavaScript 版本 3.1 的 HERE 地图 API。如果您使用的是 3.0 版,请找到 migration guide here.