2014-12-11 1 views
0

У меня есть this map example here что я бегу через Highmaps from Highcharts.Как разрешить ярлыкам страны автоматически скрываться при использовании HTML?

Вы можете заметить, что, когда мы имеем эту установку ниже, такие страны, как Румыния, Болгария, Сербия, не показывают свой ярлык, потому что страна слишком мала для этого уровня масштабирования. Если вы увеличите масштаб, эти небольшие страны станут больше и их ярлык будет отображаться.

dataLabels: {    
    enabled: true, 
    useHTML: false, 
    format: '{point.name}' 
} 

Если я изменяю useHTML: true, все страновые метки будут показывать все время, независимо от того, каков уровень масштабирования или как маленькая страна, которая вызывает ярлыки перекрываться очень плохо like this.

Из-за требований проекта, придерживаться useHTML: true является обязательным, но есть ли все-таки, чтобы добиться автоматического скрытия этикеток в этой ситуации?

ответ

1

Вы можете попытаться использовать форматтер вместо формата и показать только метки, которые должны быть видимыми. ярлык точки может быть полезным. Немного случайный пример (но вы получите идею): http://jsfiddle.net/Lu3ec0Lv/2/

Измененная часть:

formatter: function() { 
         var ret = null, 
          chart = this.series.chart, 
          xExt = chart.xAxis[0].getExtremes(); 
         if ((this.point.labelrank%2 + (xExt.max - xExt.min))%2) ret = this.point.name; 
         return ret; 
        } 
+0

Спасибо за ответ, Каспер. Я вижу, что он работает над вашим примером, но, боюсь, я все еще не могу понять, как это происходит в моем сценарии. У меня есть карта США с почти 1000 городских фигур, и условие «если» всегда возвращает значение, потому что 'this.point.labelrank% 2' имеет значение все время (я получаю неопределенный в нескольких случаях из 1000). Это означает, что я всегда получаю ярлыки. Есть ли какие-нибудь предложения, которые я мог бы попробовать? Или есть что-нибудь, что я могу сделать, чтобы сделать ограничение более узким? –

+0

Если значение null не возвращается, ни одна метка не отображается. В качестве альтернативы вы можете делать так, как это делают коды Highcharts, - установите непрозрачность на 0 для невидимых ярлыков. Вы можете определить ограничения самостоятельно. Кажется разумным скрыть метки для небольших форм карты (и для этого вы можете использовать point._maxX/_minX/_maxY/_minY), но это зависит от вас. –

+0

Hi Kacper, я пытаюсь скрыть ярлыки для маленьких фигур, но я не могу этого добиться. Есть ли какая-либо формула, которую я могу использовать для: 'if (shape_width