Bing有一个2个eventStyles用于图钉。
转到下面的链接,查看这些活动/样式 http://www.bing.com/api/maps/sdk/mapcontrol/isdk#setPushpinOptions+JS
因此,当我选择另一个引脚时,我想要完成的是取消选择已经选择的引脚。有没有办法做到这一点?
编辑:
我找到了一个解决方案,不确定它是否是最佳的,但现在就是。
我在图钉点击
上触发了事件Microsoft.Maps.Events.addHandler(pushpin, 'click', togglePinState);
然后,togglePinState函数
function togglePinState(pinData){
if(pinData.target == null)
return;
if(selectedPin == null){
selectedPin = pinData.target;
selectedPin.setOptions({enableClickedStyle: true});
return;
}
if(pinData.target != selectedPin){
selectedPin.setOptions({enableClickedStyle: false});
selectedPin = pinData.target;
selectedPin.setOptions({enableClickedStyle: true});
}
}
答案 0 :(得分:1)
在使用eventStyles内置的bing-v8时,我没有看到任何代码解决这个特殊情况,所以我希望这有助于某人。
这是我原始帖子中的新代码。这对我来说完全没问题。除非它不允许您取消选择引脚。更新代码允许您执行此操作,如下所示。
function togglePinState(pinData){
if(pinData.target == null)
return;
if(selectedPin == null){
selectedPin = pinData.target;
PopulateSidePanel(selectedPin)
return;
}
// Checks if the pin that triggered the event is not equal to the selected pin if so, we change states of both pins.
if(pinData.target != selectedPin){
selectedPin.setOptions({enableClickedStyle: false});
selectedPin.setOptions({enableClickedStyle: true});
selectedPin = pinData.target;
PopulateSidePanel(selectedPin)
}
}
更新1
添加了何时只需将当前所选内容切换为取消选择状态的功能。
function togglePinState(pinData){
// Just in case
if(pinData.target == null)
return;
// There is no selected Pin so we just assign the first pin to be the selectedPin
if(selectedPin == null){
selectedPin = pinData.target;
PopulateSidePanel(selectedPin)
return;
}
// Checks if the pin that triggered the event is not equal to the selected pin if so, we change states of both pins.
else if(pinData.target != selectedPin){
selectedPin.setOptions({enableClickedStyle: false});
selectedPin.setOptions({enableClickedStyle: true});
selectedPin = pinData.target;
PopulateSidePanel(selectedPin)
}
// if the pin that triggered the event is equal to the selected pin then we set everything to null.
else {
selectedPin = null;
PopulateSidePanel(null);
}
}