如何更改由 KML Reader 在 Here API 地图上创建的默认图标?或者换个图?

How do I change the default icon created by KML Reader on a Here API map? Or substitute an image?

我正在使用 KML 文件在地图上加载地标,因此我不编辑单个标记。因此,我想更改图标的默认颜色和大小,默认为一个非常大的蓝色气泡。我试过编辑 CSS 文件中的 ICON 条目,但没有成功。

这是我使用 H.data.kml.Reader

加载标记的方式
var defaultLayers = platform.createDefaultLayers();
var map = new H.Map(...);
var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
var ui = H.ui.UI.createDefault(map, defaultLayers);
var reader = new H.data.kml.Reader('/temp/pure-gas.kml');
reader.parse();
layer = reader.getLayer();
map.addLayer(layer);

您可以像这样尝试覆盖 CSS :

.H_ib_body {
width: 275px;
color:#FFFFFF
}

无法更改默认图标的位图。您应该创建一个自定义图标并将其用于所有标记。 为了更改 KML 解析对象,而不是向地图添加层,您可以使用 getParsedObjects() 方法获取所有已解析对象的数组,更新然后将它们添加到地图:

var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="28px" height="36px">' +
    '<path d="M 13 0 C 9.5 0 6.3 1.3 3.8 3.8 C 1.4 7.8 0 9.4 0 12.8 C 0 16.3 1.4 19.5 3.8 21.9 L 13 31 L 22.2' +
    ' 21.9 C 24.6 19.5 25.9 16.3 25.9 12.8 C 25.9 9.4 24.6 6.1 22.1 3.8 C 19.7 1.3 16.5 0 13 0 Z" fill="#AAF"/>' +
    '<path d="M 13 2.2 C 6 2.2 2.3 7.2 2.1 12.8 C 2.1 16.1 3.1 18.4 5.2 20.5 L 13 28.2 L 20.8 20.5 C' +
    ' 22.9 18.4 23.8 16.2 23.8 12.8 C 23.6 7.07 20 2.2 13 2.2 Z" fill="#B32"/>' +
    '</svg>',
  customIcon = new H.map.Icon(svg, {
    size: {w: 13, h: 18}
  }),
  group = new H.map.Group(),
  reader = new H.data.kml.Reader('YOUR_KML_FILE');

reader.addEventListener('statechange', function (evt) {
  if (evt.state == H.data.AbstractReader.State.ERROR) {
    console.log('Error in KML reader', evt);
  }
  else if (evt.state == H.data.AbstractReader.State.READY) {
    reader.getParsedObjects().forEach(function(obj) {
      // assume all parsed objects are Point Geometries
      obj.setIcon(customIcon);
    });
    group.addObjects(reader.getParsedObjects());
    map.addObject(group);
  }
});

reader.parse();

有关详细信息,请参阅 KML reader description and Icon description