使用Bing地图的InfoBox的动态操作

时间:2013-04-03 22:56:01

标签: maps bing-maps

我正在创建一个实现Bing地图控件的网站。 我放置了图钉,当用户点击图钉时,它们会显示信息框。

我现在需要做的是向信息框添加动作。我可以使用action:选项静态地执行此操作。我想动态地这样做,因为每个站点都可以有一组我想要呈现给用户的不同动作。

我已经构建了包含动作的字符串,不幸的是,信息框需要一个对象,而不是字符串,我不知道它想要哪个对象,也不知道如何将字符串转换为正确的对象。

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

虽然您没有“setActions”,但您可以在信息框上使用“setOptions”。

infobox.setOptions(infoboxOptions);

参考:http://msdn.microsoft.com/en-us/library/gg675208.aspx

选项本身可以像这样创建,只需要操作:

var infoboxOptions = {
    actions:[
        {label: 'test1', eventHandler: testEvent1}, 
        {label: 'test2', eventHandler: testEvent2}]};

参考:http://msdn.microsoft.com/en-us/library/gg675210.aspx

您可以随时调用此方法,从而为信息框添加更多操作。

现在,你提到你有一个字符串?我猜你在谈论“infoboxOptions”等的JSON表示。你可以使用像

这样的东西
jQuery.parseJSON(jsonString); //if using jQuery

您也可以通过编程方式执行此操作,因此可能使用一些条件逻辑:

var myActions = [];

if(A) {
    myActions.push( {label: 'test1', eventHandler: testEvent1});
}
if(B) {
    myActions.push( {label: 'test2', eventHandler: testEvent2});
}
if(C) {
    myActions.push( {label: 'test3', eventHandler: testEvent3});
}
infobox.setOptions({ actions: myActions});