我已经分叉了 AngularUI 的 uiMap 指令,以便将InfoWindow交换为InfoBox并添加MarkerClusters。我对 uiMap -> icMap 进行了一些广泛的更新;最值得注意的是,我将指令逻辑移出控制器,使 uiMap 成为“主”指令)。除了单击本机 MapMarker 不会打开信息框外,我几乎已经完成了所有工作。
我认为原因是我没有正确地将点击事件绑定到本机 MapMarker ( ic-map.js:163 )。
在我重新组织 uiMap 之前,我只是在map.jsicMapInfoBox
中添加了一个指令。它的open事件由以下人员注册/触发:
ui-event="{'map-click':'openMarkerInfo(marker)'}"
它调用了在其控制器中定义的openMarkerInfo()(从我的仓库复制/粘贴:GitHub Gist)。
但是,现在当我单击本机 MapMarker 时,什么也没有发生,控制台中也没有错误(但所有其他事件仍然正常触发)。
Original Plunk
Simplified Plunk (removed MarkerClusters)
在这两个 plunk 中,问题可能在于 ic-map.js(列表中的第一个文件)
map.json是数据文件
angular.js,angular-ui.js和infobox.js是 lib 文件
编辑我注意到这InfoBox.map
是undefined
; 我猜这与问题有关。
编辑未定义的 InfoBox.map 属性是问题的一部分:在ic-map.js:189上手动调用InfoBox.open有效(模板没有被编译,但这是一个不同的问题),但点击事件仍然没有'不触发InfoBox.open。模板也没有被包括在内。
已解决:我一直在处理marker
一个 DOM 对象,而不仅仅是一个 js 对象。将尽快发布解决方案。