2012-04-11 82 views
4

我目前正在瞭解這些地圖。現在我想創建一個方法來更新我的圖釘,如果我已經有一個。Ajax Bing地圖版本7 - 移動和刪除圖釘 - 初學者的教程

a。我試圖使用setLocation(newLocation),但不幸的是,當我這樣做時,我的客戶端代碼甚至沒有達到(我認爲代碼語法是不正確的,但鉻沒有給出錯誤)

b 。然後我試圖學習如何刪除它並創建另一個,但我找不到任何來自http://msdn.microsoft.com/en-us/library/gg427610.aspx的資源 - 也許我搜索不夠好。

任何人都可以提供一些關於如何移動圖釘和如何刪除一個指南?謝謝大家非常非常

var loc = new Microsoft.Maps.Location(lat, lon); 

var pin = new Microsoft.Maps.Pushpin(loc); 

編輯:部分答案

取出圖釘:

if (pin != null) 
{ 
    map.entities.remove(pin) 
} 

回答

4

要將圖釘,setLocation()確實需要使用的功能。你是否試圖從地圖上的事件處理程序調用setLocation?如果是這種情況,可能事件處理程序沒有正確設置,因此永遠不會調用它。在

// Move pushpin to "38.0", "-97.0" 
var loc = new Microsoft.Maps.Location(38.0, -97.0); 
myPushpin.setLocation(loc); 

要在行動中看到這一點,頭向Ajax Bing Maps v7 interactive SDK:但是,如果你已經定義了一個圖釘(用變量名myPushpin),並將其插入到地圖上,然後執行後續的代碼將其移動,通過放置不同的座標,在屏幕下方中心修改藍色代碼,點擊Run按鈕,看圖釘移動。

要刪除已添加到地圖中的圖釘,您需要將其從添加到地圖的EntityCollection中移除。例如,如果你簡單地插入圖釘到yourmap.entities,你這是怎麼刪除它:

var index = yourmap.entities.indexOf(myPushpin); 
if (index != -1) { 
    yourmap.entities.removeAt(index); 
} 

或者,你可以直接將其刪除不使用索引:

yourmap.entities.remove(myPushpin); 

UPDATE: 要在用戶點擊圖釘時刪除圖釘,您必須首先識別單擊事件處理程序中單擊的圖釘。圖釘可以傳遞到您的單擊處理MouseEventArgs對象的目標屬性來獲得:

Microsoft.Maps.Events.addHandler(pushpin, 'click', function (mouseEvent) { 
    var pushPinThatWasClicked = mouseEvent.target; 
    // Do whatever you want with pushPinThatWasClicked 
}); 
+0

謝謝你,這麼幫助我的朋友。我可以問你另一個問題嗎,你能告訴我如何點擊一個圖釘並刪除它嗎?我怎麼知道,一旦我點擊它,我可以刪除它?在這種情況下,用戶創建他的推針,所以我不能簡單地說明刪除(mypushpin) – test 2012-04-11 21:13:40

+1

@test確定看到我更新的答案 – 2012-04-11 21:25:57

1

下面的函數可以從地圖上刪除所有圖釘:

//remove all the pushpins 
function deletePushpin() 
{ 
    for(var i=map.entities.getLength()-1;i>=0;i--) 
    { 
     var pushpin= map.entities.get(i); 
     if (pushpin instanceof Microsoft.Maps.Pushpin) { 
     map.entities.remove(pushpin); 
     } 
    } 
} 
+0

這個作品的男人,謝謝! – 2018-01-19 03:50:00