我在左侧有一张地图,在右侧有一张桌子。我想将鼠标悬停在表格单元格上,它会弹出地图上的信息框。我的地图鼠标悬停正常工作,但是不知道如何从地图外部调用它。
我正在使用MVC。
该表有50个左右的条目,并且地图上有对应的图钉,我想在表单元格或鼠标悬停在其上方时显示该图钉的信息框。
答案 0 :(得分:0)
假设您已经或可以为每个图钉/表格单元对手动创建一些唯一的ID。然后,在创建每个图钉之后,可以将此信息分配给它的元数据:
var pushpin = new Microsoft.Maps.Pushpin(map.getCenter(), null);
pushpin.metadata = { id: "Some Id" };
// ......
// Other work like binding infobox and mouseover event
现在,假设您最终将图钉添加到地图中,如下所示:
var pushpins = [....];
var layer = new Microsoft.Maps.Layer();
layer.add(pushpins);
map.layers.insert(layer);
然后在表格一侧,将相同的ID绑定到表格单元格的自定义数据属性:
<td data-pushpinId="Some Id">Cell A</td>
当您将鼠标悬停在表格单元格上时,获取其data-pushpinId
并在图层上找到相应的图钉,然后调用其鼠标悬停事件。
var pushpinId = tableCell.getAttribute("data-pushpinId");
var pushpin = layer.getPrimitives().find((pushpin) => pushpin.metadata.id === pushpinId);
pushpin && pushpin.mouseover.invoke();