我遇到了一个与Highmaps有关的奇怪问题。我有一张Highmaps正确显示的geojson地图。鼠标悬停工作和工具提示出现在正确的位置。但是,当我打开数据标签时,它们会显示为颠倒。也就是说,应该出现在地图底部附近的标签(以其省为中心)现在显示在顶部附近,反之亦然。 数据标签'坐标系似乎是相反的。
在图像中,标签" 603863"应该出现在最底层的省份,而" 1966085"应该出现在最顶级的省份。
我的geojson数据样本:
var provincePolygons = {
"type":"FeatureCollection",
"features":[
{"type":"Feature",
"properties":{
"id":"05","name":"Tete"},
"geometry":{"type":"Polygon",
"coordinates":[[
[32.636,-14.204],
[33.245,-13.998],
[33.299,-14.032],
[33.300,-14.146],
[33.385,-14.237],
[33.478,-14.404],
[33.544,-14.434],
[33.627,-14.528],
[33.640,-14.594],
[33.718,-14.572],
...
我尝试过的事情:
数据标签是SVG元素。我认为围绕CSS规则可能会影响他们的位置,但由于使用类似转换的其他CSS元素位于正确的位置,这似乎不是问题所在。
经度是负值。我试着通过在每个值上加上+100来使它们变为正数,只是为了看看负值是否应该受到责备,但事实并非如此。这是一个很长的镜头。
我自然而然地使用了数据标签的API设置,但似乎没有一个开关会影响其从上到下的位置。我还认为保持默认值不变应导致正确放置。
我想知道数据标签是怎样的'位置由Highmaps计算。也许Highmaps找不到每个多边形的中心并需要提示?我为geojson中的功能添加了纬度和经度值,但这没有帮助。我之前在类似情况下也使用过Highmaps而无需添加此类数据。
有一个名为" highcharts-data-labels"在生成的SVG中。我正在考虑翻转它的坐标系统,以某种方式将数据标签移动到正确的位置,但这对于应该正常工作的东西会进行复杂的干预。
请注意我使用的是ng-highcharts。
我做错了什么?
答案 0 :(得分:1)
对于遇到此问题的其他人,我可以通过添加属性' chartType'来解决这个问题。到我的配置对象。 highcharts-ng图书馆的文档提到了这个用于创建高价图表的文档,但是对于高图只是没有说出任何关于它的信息。 lib默认为' chart',但你需要输入chartType:' map',它应该解决问题:)
这里是来自highcharts-ng libary的相关代码,其中config是你的图表对象:
var chartTypeMap = {
'stock': 'StockChart',
'map': 'Map',
'chart': 'Chart'
};
function getChartType(config) {
if (config === undefined || config.chartType === undefined) return 'Chart';
return chartTypeMap[('' + config.chartType).toLowerCase()];
}
希望这有帮助!