如何在Here Maps中创建多个信息块

时间:2014-10-11 14:30:07

标签: javascript here-api

我需要在地图中为不同的场合放置无限数量的信息。但是每当我放置第二个时,都会出现错误

IllegalArgument: Component instance with ID "InfoBubbles" already registered 

显然,问题是我需要为每个人分配一个不同的ID(我认为默认ID是" InfoBubbles")但我无法弄清楚如何做到这一点。

var infoBubble1 = new nokia.maps.map.component.InfoBubbles();
var infoBubble2 = new nokia.maps.map.component.InfoBubbles();
map.components.add(infoBubble1);
map.components.add(infoBubble2); --> Error

我试过了;

infoBubble1 .set("id", "xxx");
var infoBubble1 = new nokia.maps.map.component.InfoBubbles({id = "xxx"}); -> not valid since infobubbles only have an empty constructor.

我使用的是2.5.4版本。

1 个答案:

答案 0 :(得分:4)

这是一个命名问题 - API中有太多气泡。您正在混合nokia.maps.map.component.InfoBubbles component复数),它允许使用nokia.maps.map.component.InfoBubbles.Bubble interface本身创建气球文本( singular ),在屏幕上显示气球文本(实际上在地图上添加了一个DOM元素)。

只有一个唯一的组件与unqiue id - 因此如果您尝试将其包含两次,JavaScript库会抱怨。

打开新气球文字的方法是使用InfoBubbles.openBubble() method说明:

  

此方法会创建一个新的信息气泡,使用内容对其进行更新并在地图上显示。

     

参数:

     

内容:{String | DomElement}要在信息气泡中显示的内容;它可以是一个HTML字符串,请注意   气泡中的Flash内容与文档中的其他元素重叠

     

coordinate:{nokia.maps.geo.Coordinate}包含该对象的对象   气泡的锚点所在位置的地理坐标   放置。

     

onUserClose:{Function} [optional]一个回调方法   当用户关闭气泡(通过单击关闭按钮)时调用   放置。

     

hideCloseButton:{Boolean} [optional]如果设置为隐藏关闭按钮   真。

可以在Legacy API explorer中找到一个工作示例 - 重要的代码行如下:

var infoBubble = new nokia.maps.map.component.InfoBubbles();
map.components.add(infoBubble);
infoBubbles.openBubble(bubbleText1, coordinate1);
infoBubbles.openBubble(bubbleText2, coordinate2);

Infobubbles

所以添加您的组件一次,并多次使用openBubble()方法。