Bing maps 在Bing地图中使用图钉附加自定义ID

Bing maps 在Bing地图中使用图钉附加自定义ID,bing-maps,pushpin,Bing Maps,Pushpin,我想在Bing地图上的图钉上添加一个唯一的ID号(取自DB)。 当我不使用任何主题(如Bing主题)时,它可以完美地工作,如下所示: 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号(取自DB)。 当我不使用任何主题(如Bing主题)时,它可以完美地工作,如下所示:

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);
然后我可以稍后通过图钉对象访问这个“customid”属性

但是,当我激活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);
pushpin.MyID='some id'


然后,您可以使用本博文中描述的方法按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);
pushpin.MyID='some id'


然后,您可以使用本博文中描述的方法按id检索图钉:

我使用普通JavaScript对象包装图钉及其功能,这样,我就不用在图钉上存储自定义属性,而是将它们存储在包装器对象上

例如,假设指定了地图和位置,则可以创建对象:

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 Maps对象是一种很好的做法


我写了一篇关于它的博客。

我使用一个普通的JavaScript对象包装图钉及其功能,这样我就不用在图钉上存储自定义属性,而是将它们存储在包装器对象上

例如,假设指定了地图和位置,则可以创建对象:

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 Maps对象是一种很好的做法


为此写了一篇博文。

您可以使用pushpin.getId()默认方法并重新定义它以返回custid,而不是使用pushpin.custid属性

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);

您可以使用pushpin.getId()默认方法并重新定义它以返回custid,而不是使用pushpin.custid属性

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);