1

enableDoubleClickZoomToに設定して、Highmaps でレンダリングされた米国の地図がありますtrue。ユーザーがマップをズームするためにダブルクリックした州を識別しようとして行き詰まってしまい、redrawこれを計算するのに役立つ情報がイベントに埋め込まれているかどうか疑問に思いました。

問題のフィドルは次のとおりです。http://jsfiddle.net/tjnicolaides/x8q1d1cs/

$('#container').highcharts('Map', {
    chart: {
        events: {
            redraw: function (event) {
                console.log(event);
                console.log(this.getSelectedPoints());
            }
        }
    },

    mapNavigation: {
        enabled: true,
        enableDoubleClickZoomTo: true
    },

    series: [{
        data: data,
        mapData: Highcharts.maps['countries/us/us-all'],
        joinBy: 'hc-key',
        allowPointSelect: true,
        states: {
            hover: {
                color: '#BADA55'
            },
            select: {
                color: 'purple'
            }
        }
    }]
});

状態をダブルクリックしてconsole.log するとevent、グラフ全体の状態に関する情報を含む大きなオブジェクトが取得されます。

シングルクリックして状態を選択し、ダブルクリックしてズームインすると、状態に関する情報を取得できますが、this.getSelectedPoints()ズームする前に何かが選択されると期待するのは合理的ではありません。一部のマップでは、完全に無効になっている場合があります。から得たいと思っていた出力の種類のデモンストレーションとして、ここに含めましたredraw。郵便番号、州名、またはインデックスを計算して、元のシリーズをフィルター処理することは許容されます。

4

1 に答える 1

1

次のように、ラップすることでそのポイントを検出する最も簡単な方法だと思いますPointer.onContainerDblClick

(function (H) {
    H.wrap(H.Pointer.prototype, "onContainerDblClick", function (p, event) {
        console.log(this.chart.hoverPoint); // hovered point - may not exist, e.g. when clicking on the blank space
        p.call(this, event);
    });
})(Highcharts)

ライブデモ: http://jsfiddle.net/x8q1d1cs/8/

于 2015-09-23T10:20:39.437 に答える