2014-10-11 49 views
1

我需要为地图中的不同场合放置无限数量的infobubbles。然而,每当我把第二个,有一个错误如何在这里创建多个infobubble地图

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。

回答

4

这是一个命名法问题 - API中有太多泡泡。你是混合了nokia.maps.map.component.InfoBubblescomponent复数),它允许创建气球文本,与nokia.maps.map.component.InfoBubbles.Bubbleinterface本身(奇异),它在屏幕上显示一个气球文本(实际上在地图上增加了一个DOM元素)。

只能有一个独特的组件与独特id - 因此,JavaScript库抱怨,如果你试图包括它两次。

打开一个新的气球文本的方法是使用InfoBubbles.openBubble()method其中规定:

此方法创建一个新的信息出现泡沫,内容更新,并显示在地图上。

参数:

内容:{String | DomElement}内容在信息提示被显示;它可以是一个HTML字符串,请注意,在气泡 Flash内容重叠文档

中的其他元素的坐标:{nokia.maps.geo.Coordinate}包含位置,其中所述气泡的锚是 要放置的 地理坐标的对象。

onUserClose:{Function} [optional]这是 调用时用户关闭气泡(通过点击关闭按钮)的回调方法是 放置。

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

工作示例可以在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()方法多次。

+0

很好的答案,但是如果你有1页2地图?同样的错误,因为信息都附加到两个地图上。任何方式绕过这个? – gulty 2014-11-13 13:37:59

+0

我做了你的建议,但它仍然无法正常工作。 当我打开第二个泡泡时,首先消失。 – Zarko 2015-03-21 15:59:47