首页 > 解决方案 > 为什么大 eojson 不显示在 Here Map 上?

问题描述

我正在尝试使用 VueJs 应用程序中的 JavaScript API 在 Here Map 上解析和显示英国邮政编码区的 geojson 表示。

代码比较简单—— DistrictGeojson 就是 JSON 文档。在地图初始化并显示后调用以下函数:

processGeojson() {
  const reader = new H.data.geojson.Reader(districtGeojson, {
    disableLegacyMode: true
  });

  reader.parse();
  const layer = reader.getLayer();

  this.shapes = layer;
  console.log(layer.isValid(7));
  try {
    this.map.addLayer(layer);
  } catch (err) {
    console.log('err adding layer', err);
  }
}

如您所见,其中有一个 console.log() 用于在默认缩放级别对图层的有效性进行某种检查,并返回 true。

我所看到的只是地图短暂闪烁,然后显示普通地图。有没有办法从 API 获得一些关于出了什么问题的反馈,它似乎只是默默地失败了 - addLayer 不会抛出异常?

如有必要,我可以共享 JSON 文档,但由于它很大(5Mb),我想先看看这段代码是否有任何明显错误。

标签: javascriptheremaps

解决方案


因此,此处的文档中似乎可能存在错误:https ://developer.here.com/documentation/maps/3.1.17.0/api_reference/H.data.geojson.Reader.html#getLayer

其中指出:

var reader = new H.data.geojson.Reader('/path/to/geojson/file.json');
reader.parse();
// Assumption: map already exists
map.addLayer(reader.getLayer());

而对我有用的是调用 parseData() 而不是 parse(),传递源数据。我可以:

var reader = new H.data.geojson.Reader('');
reader.parseData(districtGeojson);
// Assumption: map already exists
map.addLayer(reader.getLayer());

但不是

var reader = new H.data.geojson.Reader('./Districts.json');
reader.parse();
// Assumption: map already exists
map.addLayer(reader.getLayer());

这就引出了为什么构造函数中需要文件路径的问题,因为我无法让读者解析作为构造函数中的路径传递的数据。


推荐阅读