我正在尝试使用HERE贴图api在地图上渲染Antarctica geojson形状。
geojson在这里找到:https://github.com/johan/world.geo.json/blob/master/countries/ATA.geo.json
你可以看到github很好地呈现它
在geojson.io上使用相同的geojson也可以很好地呈现它。
但不知何故,在HERE地图中使用它时似乎会呈现南极洲的“逆”
它除了南极洲之外的所有颜色。
见:http://imagebin.ca/v/1dZIn5vsEuFx
(我尝试使用jsfiddle进行示例,但它无法加载外部json。而HERE贴图api不允许您从字符串加载geoJSON)
geoJSON有问题吗? HERE地图api有问题吗?
答案 0 :(得分:2)
API不太了解如何处理开放多边形。因为多边形基本上只是一个围绕地球的线,所以API不知道你的形状是否在北极或南极上闭合。默认情况下,它假定打开的多边形靠近北极。您可以使用此标志(setNorthPoleCovering)更改此设置:
然而,实际上在代码中达到这一点可以做到这一点有点复杂:
// When you instantiate the geojson.Reader you can specify a function that
// receives all objects the reader parsed. It is called when objects are
// being rendered on the map. At that point we can look into the object and
// check whether it is Antarctica
var reader = new H.data.geojson.Reader('...ATA.geo.json', {
style: function(obj) {
if (obj.getData().properties.name === "Antarctica") {
//AHA! We found Antarctica!
// Since this is a multi-polygon we have a group here which contains
// all polygons. We apply the north-pole-covering flag to each of the
// polygons
obj.forEach(function(polygon) {
polygon.setNorthPoleCovering(false);
});
}
}
});
reader.parse();
map.addLayer(reader.getLayer());
答案 1 :(得分:0)
取决于您要在动态行为方面完成的工作,如果您只是想显示或共享带有国家/地区基本样式的卡片和其他元数据的地图,则HERE XYZ可用于在此处的地图上呈现GeoJSON。
如果您想使用JavaScript而不是嵌入式iframe来实现,那么另一个答案可能就是您想要的。