2012-12-04 72 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);