我有来自巴西的GeoJson,这是官方HighMaps Brazil地图的更详细版本。在这个JSON中,我将各州划分为其中间区域。
当我试图在这个GeoJson的顶部画一个点时,我收到消息告诉我这个功能只有官方的地图映射支持。阅读documentation我发现我应该在我的geojson上创建一个对象hc-transform
。我认为使用官方HighMaps巴西地图使用的hc-transform
是有意义的,当我这样做时,它有点工作正常:它给了我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行,我们可以看到Belo Horizonte这个城市未被绘制在Mesoregion地图上的正确位置。
那么,我怎样才能使hc-transform
正确?