我有一个来自巴西的 GeoJson,它是 HighMaps 巴西官方地图的更详细版本。在这个 JSON 中,我将状态划分为中间区域。
当我试图在这个 GeoJson 上画一个点时,我收到一条消息,告诉我这个功能只支持官方的 highmaps 地图。阅读文档我发现我应该hc-transform
在我的 geojson 上创建一个对象。我认为使用hc-transform
官方 HighMaps 巴西地图所使用的相同是有意义的,当我这样做时,它还不错:它给了我相同的点与fromLatLonToPoint()
方法但是当我使用该方法toPixels()
获取“画布”时位置(并在上面画一些东西)它给了我不同的价值。
我使用的代码是这样的(它适用于巴西官方高图):
let point = chart.fromLatLonToPoint({lat: n.lat, lon: n.long});
let x = chart.xAxis[0].toPixels(point.x, true);
let y = chart.yAxis[0].toPixels(point.y, true);
// Draw the div / point / whatever on the (x, y) position
我说的 GeoJson 你可以在这里找到:https ://github.com/Menighin/HighmapsExperiment/blob/master/geo/mesorregiao.json
查看 Highmaps 官方巴西地图我可以看到每个多边形也有一些 highcharts 属性(hc-middle-x
、hc-middle-y
等)。这有什么区别吗?如果没有,我做错了什么?
编辑
事实证明我hc-transform
似乎不正确,正如我们在这个小提琴上看到的那样:http:
//jsfiddle.net/0vm8a4x3/
如果我们取消注释第 8 行,我们可以看到贝洛奥里藏特市并未绘制在 Mesoregion 地图上的正确位置。
那么,我怎样才能得到hc-transform
正确的呢?