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.
有没有办法让我们从 "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.