4

ビングマップAJAXコントロール7.0のパンのグラブの側面だけを無効にするにはどうすればよいですか?

私はこれを試しました-

var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), { credentials: "bing maps credentials", mapTypeId: Microsoft.Maps.MapTypeId.road, disablePanning: true});

ただしdisablePanning、マップオプションでプロパティを設定すると、グラブパンだけでなくズームパンも無効になります。ズームは完全に無効になるのではなく、マップの中央でのみズームインおよびズームアウトします。マウスのスクロールホイールを使用してカーソルの下のマップをズームインできるズームパンに出くわしたことは間違いありません。したがって、ズームインおよびズームアウトしてカーソルを移動することでパンできます。ズームパンを有効にしたいのですが、グラブパン(ユーザーがマウスを押してドラッグする)を無効にします。

メインのBingMapsサイトでマイプレイスエディターを使用する場合と非常によく似た機能を目指しています。ポリラインツールを使用してマップ上に描画する場合、グラブパン無効になり、ズームパンは有効になります。私は実際に、マイプレイスエディタのポリラインツールに似たカスタム描画ツールを作成するつもりです。

私はAPIを研究してきましたが、それを行う方法をまだ発見していません。また、メインのBing Mapsサイトでそれがどのように行われるかを発見しようとしましたが、javascriptコードがすべて縮小されているため、非常に難しいと感じています。ポリラインツールがマウスを乗っ取ることに成功しましたが、それだけです。

確かにこれを行う簡単な方法がなければなりません。それはどのように行われますか?

4

1 に答える 1

5

希望する動作を実現するために設定できるマップオプションはないと思います(ズームパンを有効にする/グラブパンを無効にする)。ただし、それをハックする簡単な方法があります。パンは、ユーザーがマップをクリックしてマウスを動かすことで開始されます。したがってmousedown、マップに独自のイベントハンドラーを提供でき、その実装でのデフォルトの動作を防ぐmousedownことができる場合は、これで問題ありません。処理されたプロパティがオンになっていることがわかりMouseEventArgsます。

Microsoft.Maps.Events.addHandler(yourMapObj, 'mousedown', function (mouseEvent) {
    mouseEvent.handled = true; //A boolean indicating whether the event is handled. If this property is set to true, the default map control behavior for the event is cancelled.
}); 

これによりmousedown、マップ上のイベントはユーザーによって処理され、マップによって無視されます。したがって、ユーザーがマウスを使用してマップをパンしようとしても、何も起こりません。それでも、通常どおりクリックしてズームできます。画鋲や図形など、マップ上に他の要素がある場合は、mousedownイベントがそれらに到達するのを防ぐことに注意してください。そのため、mousedown登録したイベントハンドラーは呼び出されません。これを処理するには、他のイベントを呼び出すときに上記のハンドラーの登録を解除するかmousedown(推奨)、またはターゲットプロパティを調べて、何がマウスダウンを発生さMouseEventArgsせたかを確認します(乱雑)。

于 2012-04-30T01:24:44.667 に答える