HERE Maps Polyline组pointerenter事件失效tap正常如何解决
问题根因
pointerenter事件不触发是两个配置遗漏导致的:
- 仅引入mapevents依赖文件不会自动启用完整指针事件体系,必须手动初始化MapEvents实例绑定到地图,否则只有地图原生支持的
tap等基础事件能正常响应,pointerenter、pointerdrag这类扩展指针事件不会被派发。 H.map.Group默认不会接收子元素的冒泡事件,且内部的Polyline实例默认未开启交互标记,事件根本不会传递到你绑定事件的Group对象上。
修复方案
按以下步骤修改代码即可:
- 第一步:地图初始化完成后,全局执行一次MapEvents初始化,启用完整指针事件支持:
new H.mapevents.MapEvents(this.map);
如果后续要实现拖拽改路径的功能,建议同步初始化Behavior实例,内置拖拽、平移等交互逻辑:
new H.mapevents.Behavior(new H.mapevents.MapEvents(this.map));
- 第二步:给两个Polyline实例开启交互标记,允许其接收指针事件,修改对应Polyline初始化代码,新增
interactive: true配置:
let routeOutline = new H.map.Polyline(linestring, { style: { lineWidth: 10, strokeColor: 'rgba(0, 128, 255, 0.7)', lineTailCap: 'arrow-tail', lineHeadCap: 'arrow-head' }, interactive: true }); let routeArrows = new H.map.Polyline(linestring, { style: { lineWidth: 10, fillColor: 'white', strokeColor: 'rgba(255, 255, 255, 1)', lineDash: [0, 2], lineTailCap: 'arrow-tail', lineHeadCap: 'arrow-head' }, interactive: true } );
- 第三步:给routeLine Group开启交互标记和事件冒泡,允许子元素的事件传递到Group层触发绑定的回调,修改Group初始化代码:
let routeLine = new H.map.Group({ volatility: true, objects: [routeOutline, routeArrows], interactive: true, bubble: true })
修改完成后,鼠标移入路线时就会正常触发pointerenter回调,控制台输出对应日志。
内容的提问来源于stack exchange,提问作者Eva
相关产品推荐
相关产品推荐

