在heremaps中使用GeoJSON显示Antarctica

时间:2014-10-13 08:13:30

标签: javascript geojson here-api

我正在尝试使用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有问题吗?

2 个答案:

答案 0 :(得分:2)

API不太了解如何处理开放多边形。因为多边形基本上只是一个围绕地球的线,所以API不知道你的形状是否在北极或南极上闭合。默认情况下,它假定打开的多边形靠近北极。您可以使用此标志(setNorthPoleCovering)更改此设置:

http://developer.here.com/javascript-apis/documentation/v3/maps/topics_api_nlp/h-map-polygon.html#h-map-polygon__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。

Antartica Test

如果您想使用JavaScript而不是嵌入式iframe来实现,那么另一个答案可能就是您想要的。