我需要在地图中为不同的场合放置无限数量的信息。但是每当我放置第二个时,都会出现错误
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版本。
答案 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);
所以添加您的组件一次,并多次使用openBubble()
方法。