我想在我的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"属性通过Pushpin对象。
但是,当我激活Bing主题时,一切都有效,除了这些自定义值,这对我的应用程序至关重要。
关于将一些独特ID附加到这些图钉的其他方法的任何想法,或解决此问题的想法?
答案 0 :(得分:3)
只需向图钉添加自定义属性,如下所示:
pushpin.MyID ='some id';
然后,您可以使用此博客文章中描述的方法按ID检索图钉:http://rbrundritt.wordpress.com/2012/04/02/get-entity-by-property-in-bing-maps-v7/
答案 1 :(得分:1)
我使用普通的JavaScript对象来包装Pushpin及其功能,这样我就不会在Pushpin上存储自定义属性,而是将它们存储在包装器对象上。
例如,假设我们指定了地图和位置,我们就可以创建我们的对象:
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对象是一种很好的做法。
写了一篇关于它的博文here。
答案 2 :(得分:0)
您可以使用pushpin.getId()默认方法而不是使用pushpin.custid属性,并重新定义它以返回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);