2

私はオープン ストリート マップとオープン ストリート レイヤーを使用しており、技術者がマーカーに移動して作業を行い、次の場所に移動するチケット (マーカー) のマップを作成しようとしています。マーカーを作成し、onclick 関数を起動することができます。私が理解できないのは、マーカー自体から情報を引き出す方法です。私は..のようなマーカーを作成しています

addPinViaLongLat: function(icon, long, lat, popupString) { 
   var icon_marker = new OpenLayers.Icon(icon, null, null);
   var marker = new OpenLayers.Marker(new OpenLayers.LonLat(long, lat).transform(rapidSchedulingMap.coor_from, rapidSchedulingMap.coor_to), icon_marker);
   var popup;

   marker.events.register('mouseover', marker, function(evt) {
     popup = new OpenLayers.Popup.FramedCloud("Popup",
            new OpenLayers.LonLat(long, lat).transform(rapidSchedulingMap.coor_from, rapidSchedulingMap.coor_to),
            null,
            popupString,
            null,
            false);
       rapidSchedulingMap.map.addPopup(popup);
   });
   marker.events.register('mouseout', marker, function(evt) {
       popup.hide();
   });
   rapidSchedulingMap.bindClick(marker);
   rapidSchedulingMap.layer.addMarker(marker);
},

クリックでmarker.ticketNumberのように参照できるように、データを追加する方法があるかどうか疑問に思っています。グーグルでこのようなものを見たことがなかったので、ここに来ました。誰かがいくつかのアイデアを持っていることを願っています。

編集: openlayer で特定のマーカーを削除する方法を見つけました。これは、marker.XXXXを実行する機能を示し、マーカーを配列にプッシュして、それらすべてを追跡します。

4

1 に答える 1

3

私は解決策を見つけました...

var marker = new OpenLayers.Marker(new OpenLayers.LonLat(long, lat).transform(rapidSchedulingMap.coor_from, rapidSchedulingMap.coor_to), icon_marker);
marker.data = data;

次に、マーカーをクリックすると、marker.data を実行して、マーカーごとに保存したオブジェクトを取得できます。値を追跡するために追加の配列を作成する必要はありません。

于 2013-08-12T17:47:58.477 に答える