找回密码
 立即注册
首页 业界区 科技 麒麟系统下firefox浏览器openlayers地图拖拽、双击无效 ...

麒麟系统下firefox浏览器openlayers地图拖拽、双击无效

訾懵 2025-6-8 22:11:22
  依照用户的国产化需求,我们在现有的国产化机器上部署了之前就已经完成的系统。测试发现所有页面的地图拖拽和双击功能不能正常使用。
  解决思路:首先写个简单的demo,只有点击事件。测试结果:依旧无效。问题初步定位,跟ol源代码有关系。进一步分析,拖拽和双击无效 ,说明和点击事件有关。查阅原代码(过程省略,因为找了太久我才发现是这里),点击事件相关内容:
  1. ol.interaction.Pointer.prototype.updateTrackedPointers_ = function(mapBrowserEvent) {
  2.   if (this.isPointerDraggingEvent_(mapBrowserEvent)) {
  3.     var event = mapBrowserEvent.pointerEvent;
  4.     if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERUP) {
  5.       delete this.trackedPointers_[event.pointerId];
  6.     } else if (mapBrowserEvent.type ==
  7.         ol.MapBrowserEvent.EventType.POINTERDOWN) {
  8.       this.trackedPointers_[event.pointerId] = event;
  9.     } else if (event.pointerId in this.trackedPointers_) {
  10.       // update only when there was a pointerdown event for this pointer
  11.       this.trackedPointers_[event.pointerId] = event;
  12.     }
  13.     this.targetPointers = ol.object.getValues(this.trackedPointers_);
  14.   }
  15. };
复制代码
调试发现这里三个if ,我的event一个也不喜欢。所以问题位置找到了,把event强行加给trackedPointers_问题就解决啦。
  1. ol.interaction.Pointer.prototype.updateTrackedPointers_ = function(mapBrowserEvent) {
  2.   if (this.isPointerDraggingEvent_(mapBrowserEvent)) {
  3.     var event = mapBrowserEvent.pointerEvent;
  4.     if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERUP) {
  5.       delete this.trackedPointers_[event.pointerId];
  6.     } else if (mapBrowserEvent.type ==
  7.         ol.MapBrowserEvent.EventType.POINTERDOWN) {
  8.       this.trackedPointers_[event.pointerId] = event;
  9.     } else if (event.pointerId in this.trackedPointers_) {
  10.       // update only when there was a pointerdown event for this pointer
  11.       this.trackedPointers_[event.pointerId] = event;
  12.     }else{
  13.       //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓兼容华为银河麒麟桌面系统浏览器地图无法拖拽问题↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  14.       this.trackedPointers_["1"] = event;
  15.   }
  16.     this.targetPointers = ol.object.getValues(this.trackedPointers_);
  17.   }
复制代码
困扰我这么久的问题居然一句话就能搞定~~

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册