2012-04-28 22 views
3

如何禁用只是方面的平移Bing地圖AJAX控制7.0?禁用'搶'平移冰崩地圖控制

我曾經嘗試這樣做 -

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

但設置在地圖選項中disablePanning財產不僅禁止搶平移也是變焦平移。變焦不會完全禁用,而是隻能放大和縮小地圖中心。毫無疑問,您將遇到過zoom平移,您可以使用鼠標滾輪放大光標下方的地圖,因此可以通過放大和縮小移動光標進行平移。我想要放大平移啓用,但抓取平移(用戶按下鼠標並拖動它)將被禁用。

我的目標功能非常類似於在主冰淇淋地圖網站上使用我的地點編輯器。當使用折線工具在地圖上繪製抓取平移禁用,並且縮放正如我所願啓用平移。我實際上打算創建一個類似於我的地點編輯器中的折線工具的自定義繪圖工具。

我一直在研究API,但還沒有發現如何去做。我也試圖發現它是如何在主要的bing地圖網站上完成的,但是由於JavaScript代碼全部縮小了,我發現它非常困難。我已經成功地發現,折線工具劫持了鼠標,但這是所有。

當然,必須有一個簡單的方法來做到這一點。它是如何完成的?

回答

5

我不認爲你可以設置一個地圖選項來實現你想要的行爲(啓用縮放平移/禁用平移)。但是,有一個簡單的方法來破解它。平移由用戶在地圖上點擊並移動鼠標來啓動。因此,如果您可以爲地圖提供自己的mousedown事件處理程序,並且在其實施中阻止mousedown的默認行爲,那麼您應該很好。原來,handled財產上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上interogate目標屬性以查看是什麼激發了mousedown(雜亂)。

+0

非常感謝博金,我認爲這會奏效。 – 2012-05-01 17:45:10