jac*_*cob 5 javascript events google-maps-api-3 angularjs infobox
我已经分叉了AngularUI的uiMap指令,以便将InfoWindow交换为InfoBox并添加MarkerClusters.我对uiMap做了一些大的更新 - > icMap; 最值得注意的是,我将指令逻辑移出控制器,使uiMap成为"主"指令.除了点击原生MapMarker没有打开信息框之外,我几乎所有工作都有效.
我认为原因是我没有将click事件正确绑定到本机MapMarker(ic-map.js:163).
在我重新组织uiMap之前,我只是icMapInfoBox在map.js中添加了一个指令.其公开活动由以下人员注册/触发:
ui-event="{'map-click':'openMarkerInfo(marker)'}"
Run Code Online (Sandbox Code Playgroud)
这被称为openMarkerInfo()在其控制器中定义(从我的回购复制/粘贴:GitHub的要点).
但是,现在当我单击本机MapMarker时,没有任何反应,我在控制台中没有错误(但所有其他事件仍然正常启动).
Original Plunk
Simplified Plunk(删除MarkerClusters)
在两个插件中,问题可能在于ic-map.js(列表中的第一个文件)
map.json是一个数据文件
angular.js,angular-ui.js和infobox.js是lib文件
编辑我注意到InfoBox.map是undefined; 我猜这与问题有关.
编辑未定义InfoBox.map财产是问题的一部分:手动调用InfoBox.open对IC-map.js:189个工程(模板没有被编译,但是这是一个不同的问题),但click事件仍然没有按触发InfoBox.open.此外,模板未包含在内.
已解决:我一直在处理marker一个DOM对象,而不仅仅是一个js对象.很快会发布解决方案.
工作示例:http://plnkr.co/edit/mamx5EXtHxSo4aqMSZUd
google.maps.event.addListener()(请参阅工作示例 > ic-map.js:154-156)。div#map(请参阅工作示例 > index.html:41-42)。由于继承和共享模型的工作方式,所有指令必须位于同一个 DOM 元素上(因为没有人可以向下看,只能向上看)。这对于将指令逻辑移出控制器是必要的(就像 AngularUI 的实现一样)。在我的实现中,该模型在指令(和指令控制器)内的 icMaps* 指令之间共享。marker:
marker附加到 DOM 对象:ng-repeat="marker in markers"marker只是一个 js 对象。| 归档时间: |
|
| 查看次数: |
2493 次 |
| 最近记录: |