10

マーカー配列からデータを取得し、onmarkerclick関数で呼び出して、マーカーがクリックされたらURLに移動できるようにしようとしていますが、試行したすべてが失敗しているようです。マーカー配列にURLを追加し、これをonmarkerclickに戻したいと思います。高度なご協力ありがとうございます:

 $(function(){
    $('#map1').vectorMap({
                  map: 'world_mill_en',
                  scale: ['#C8EEFF', '#0071A4'],
                  normalizeFunction: 'polynomial',
                  hoverOpacity: 0.7,
                  hoverColor: false,
                  markerStyle: {
                    initial: {
                          fill: '#F8E23B',
                          stroke: '#383f47'
                    }
                  },
                  backgroundColor: '#383f47',
                  markers: [{latLng: [48.921537, -66.829834], name: "something", weburl : "/blah/foo"

            },{latLng: [45.995944, -64.171143], name: "something else", weburl : "/blah/foo"

            },],
                  onMarkerClick: function(events, label, index, weburl) {
                    alert (1+weburl);                
                   }
            });
});
4

3 に答える 3

29

偶然の一致で、私は昨日だけ同じ問題に直面しました.. :)

私が見つけた解決策は、外部に配列を作成し、クリック関数のインデックスでそれにアクセスすることでした。

var markers = [
    {latLng: [48.921537, -66.829834], name: "something", weburl : "/blah/foo"},
    {latLng: [45.995944, -64.171143], name: "something else", weburl : "/blah/foo-else"}
];

$(function(){
    $('#map1').vectorMap({
                  ...
                  markers: markers,
                  onMarkerClick: function(event, index) {
                      // alter the weburl
                      alert(markers[index].weburl);
                  }
            });
});
于 2013-02-05T17:21:27.710 に答える
1

この種の問題を別の方法で解決したからといって、それを非常に賢く感じているので、答えを投稿します。

jQuery.dataまたはjavascriptdomdataSetsを使用して任意のデータを保存できます。ページ上に要素を含む他のSVGがない限り<circle>、すべての<circle>要素を反復処理して、配列からそれらにデータを与えることができます。インデックスは一致しますが、データインデックスを安全策として使用できます。

かなりクール。これはかなり古いですが、おそらくこの代替手段は誰かを助けるでしょう。

于 2013-11-22T21:50:51.047 に答える
0

RajatとOldenborgのソリューションを使用して、デフォルトのjVectorMapセットアップを使用してマーカー名を取得することができました

onMarkerClick: function(event, index) {

        console.log(map.markers[index].config.name);
    }
于 2019-11-20T12:41:18.557 に答える