2012-12-04 102 views
1

我想向我放在Bing地圖上的圖釘添加唯一的ID號(從數據庫中獲取)。 它完美的作品時,我不使用任何主題(如必應主題),就像這樣:在Bing地圖中使用圖釘附加自定義ID

var pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(lat, lon), 
{icon: some_icon, width: 34, height: 43}); 

pushpin.customid = 13; 
map.entities.push(pushpin); 

,然後我可以稍後訪問通過圖釘對象這一「的自訂」屬性。

但是,當我激活Bing主題時,一切正常,除了這些自定義值,這對我的應用程序是至關重要的。

有關其他方式附加一些唯一的ID到這些圖釘的想法,或解決這個問題的想法?

回答

1

所以,與其在圖釘存儲自定義屬性,我將它們存儲在包裝對象上。

例如,假設我們有指定的地圖和位置,我們就可以創造我們的目標:

var Pin = function(location, map) { 
    this._pushpin = new Microsoft.Maps.Pushpin(location); 
    map.entities.push(this._pushpin); 
    this.id = (new Date).valueOf(); 
    var self = this; 
    Microsoft.Maps.Events.addHandler(this._pushpin, 'click', function() { 
     console.log(self.id); 
    }) 
}; 

這樣,當我們需要在後面引用圖釘的ID,例如當點擊圖釘時,我們可以獲取包裝器對象的ID。

使用公共API擴展Bing地圖對象是一種很好的做法。

寫了一篇關於它的博客文章here

0

而不是使用pushpin.custid屬性,你可以使用pushpin.getId()默認的方法,並重新定義它返回客戶ID

var pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(lat, lon), 
             {icon: some_icon, width: 34, height: 43}); 

var custid=13; 
pushpin.getId = function(){ 
    return custid; 
} 
map.entities.push(pushpin);