2

Virtual Earth (または Bing!...) SDK を使用しており、誰かがマップをクリックしたときにイベントを添付する必要があります。残念ながら、マップをパンすると onclick イベントもトリガーされます。回避策を知っている人はいますか?

function GetMap(){
    map = new VEMap('dvMap');
    map.LoadMap(new VELatLong(35.576916524038616,-80.9410858154297), 11, 'h',false);
    mapIsInit = true;
    map.AttachEvent('onclick', MapClick);
}

function MapClick(e){
    var clickPnt = map.PixelToLatLong(new VEPixel(e.mapX,e.mapY));
    Message('Map X: ' + clickPnt.Longitude + '\nMap Y: ' + clickPnt.Latitude + '\nZoom: ' + e.zoomLevel);
}
4

3 に答える 3

1

私は同じ問題に遭遇しています。私の用語では、クリック イベントとは、mouseDown と mouseUp の間の距離が特定のしきい値を下回っていることを意味します。

私の実験で機能するコードは次のとおりです。

<script type="text/javascript">
  var mouseDownLocation;
  var mouseClickThreshold = 5;

  function init()
  {
    var map = new VEMap('myMap');
    map.LoadMap(new VELatLong(-27.15,153),8,'r' ,false);
    map.AttachEvent("onmousedown", function(e) {
        var x = e.mapX;
        var y = e.mapY;
        mouseDownLocation = new VEPixel(x, y);
    });
    map.AttachEvent("onmouseup", function(e) {
        var x = e.mapX;
        var y = e.mapY;
        if(Math.abs(mouseDownLocation.x - x) + 
               Math.abs(mouseDownLocation.y - y) > mouseClickThreshold) {
            return;
        }
        pixel = new VEPixel(x, y);
        var LL = map.PixelToLatLong(pixel);
        document.getElementById("myMapInfo").innerHTML = 
               "Pixel X: " + x + " | Pixel Y: " + y + 
               "<br /> LatLong: " + LL + 
               "<br/>" + e.eventName;
    });
  }  
</script>

メッセージは、ダウン イベントとアップ イベントの間でマウスがあまり動かなかった場合にのみ表示されます。つまり、通常のクリックではトリガーされますが、ドラッグではトリガーされません。

これはバージョン 6.2 の VE API を使用しており、ID が「myMap」と「myMapInfo」の 2 つの div が必要です。これは実験的なコードでもあり、改善できる可能性がありますが、一般的なアプローチは問題ないようです。

于 2009-11-26T03:38:28.247 に答える
0

それはすべて、あなたが何をしようとしているのかにかかっています。onclick イベント ハンドラーでどのマウス ボタンが押されたかを確認できます。例: マウスの左ボタンの場合は何もせず、マウスの右ボタンの場合はロジックを実行してメッセージを表示したり、プッシュピンをプロットしたりします。

明確にするために、マウスを使用したマップのパンのみが onclick イベントをトリガーします。ナビゲーション ダッシュボードで小さな矢印を使用すると、onclick イベントはトリガーされません。

于 2009-07-30T03:10:23.810 に答える
0

Peter に感謝します。これは 6.3 でもうまく機能しています。私は Bing マップを発見しており、イベント ハンドラーで少し迷っているので、役に立ちました!

于 2010-09-24T14:06:00.727 に答える