如何为 HERE Map UI Labels 3.0 创建自定义标签?

How to create custom labels for HERE Map UI Labels 3.0?

我们需要为 Here Map UI 图层添加自定义标签。目前,我们正在使用 createDefaultLayers 制作地图图层并将它们发送到 UI 创建中。

   var maptypes = platform.createDefaultLayers({
        tileSize: devicePixelRatio > 1 ? 512 : 256,
        ppi: devicePixelRatio > 1 ? 320 : 72
   });
   ...... // some other map setup

   var ui = H.ui.UI.createDefault(hereMap, maptypes);

我们正在使用这些版本:

<script src="https://js.api.here.com/v3/3.0/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.0/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.0/mapsjs-ui.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.0/mapsjs-mapevents.js" type="text/javascript" charset="utf-8"></script>

有没有一种简单的方法可以只替换 UI 地图上的标签?我已经尝试查看 并按照那里的答案中的提示进行操作,但看起来它在我们当前的版本中对我们不起作用。新图层根本不显示,在删除并创建新图层后重新添加地图设置会将地图设置放在比例指示器的左侧(看起来有点奇怪,地图 UI 选项不会工作 - 可能会很快添加屏幕截图)。关于如何处理这个问题的任何提示?

谢谢!

的答案不起作用的问题是,它是针对最近发布的 api 的新版本 3.1,其中重新设计了 MapSettings 对象。 这是适合您的代码:

let defaultLayers = platform.createDefaultLayers({
  tileSize: devicePixelRatio > 1 ? 512 : 256,
  ppi: devicePixelRatio > 1 ? 320 : 72
});

// remove old MapSettings
ui.removeControl('mapsettings');

// get Scalebar UI and remove it
let scalebar = ui.getControl('scalebar');
ui.removeControl('scalebar');

// create custom one
let mapSettings = new H.ui.MapSettingsControl( {
    entries : [ { 
      name: "Custom Normal",
      mapType: defaultLayers.normal
    }, {
      name: "Custom Satellite",
      mapType: defaultLayers.satellite
    }, {
      name:"Custom Terrain",
      mapType:defaultLayers.terrain
    }],
  incidents: defaultLayers.incidents
  });

// add customised MapSettings
ui.addControl("custom-mapsettings", mapSettings);

// add Scalebar back so it will be placed next to MapSettings
ui.addControl('scalebar', scalebar);