javascript - 为什么大 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),我想先看看这段代码是否有任何明显错误。
解决方案
因此,此处的文档中似乎可能存在错误: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());
这就引出了为什么构造函数中需要文件路径的问题,因为我无法让读者解析作为构造函数中的路径传递的数据。
推荐阅读
- ios - Cocoapods 共享依赖
- actions-on-google - 如何在 New Actions Builder 中实施测验
- javascript - 从 esp javascript 获取时出现 CORS 错误
- mongodb - 如何在当前日期字段中添加天数以便能够比较日期范围
- cookies - 凤凰饼干解密
- reactjs - 使用 React-js 显示 3d 模型格式 gltf
- javascript - 如何映射/过滤和匹配数组中的字符串
- c# - Xamarin 使用 C# 形成 FlexLayout 选择控件
- algorithm - 数组中数字的出现,复杂度为log n算法和c
- android - 如何检索当前设备的 dpi?