麒麟系统下firefox浏览器openlayers地图拖拽、双击无效
依照用户的国产化需求,我们在现有的国产化机器上部署了之前就已经完成的系统。测试发现所有页面的地图拖拽和双击功能不能正常使用。解决思路:首先写个简单的demo,只有点击事件。测试结果:依旧无效。问题初步定位,跟ol源代码有关系。进一步分析,拖拽和双击无效 ,说明和点击事件有关。查阅原代码(过程省略,因为找了太久我才发现是这里),点击事件相关内容:
ol.interaction.Pointer.prototype.updateTrackedPointers_ = function(mapBrowserEvent) {
if (this.isPointerDraggingEvent_(mapBrowserEvent)) {
var event = mapBrowserEvent.pointerEvent;
if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERUP) {
delete this.trackedPointers_;
} else if (mapBrowserEvent.type ==
ol.MapBrowserEvent.EventType.POINTERDOWN) {
this.trackedPointers_ = event;
} else if (event.pointerId in this.trackedPointers_) {
// update only when there was a pointerdown event for this pointer
this.trackedPointers_ = event;
}
this.targetPointers = ol.object.getValues(this.trackedPointers_);
}
};调试发现这里三个if ,我的event一个也不喜欢。所以问题位置找到了,把event强行加给trackedPointers_问题就解决啦。
ol.interaction.Pointer.prototype.updateTrackedPointers_ = function(mapBrowserEvent) {
if (this.isPointerDraggingEvent_(mapBrowserEvent)) {
var event = mapBrowserEvent.pointerEvent;
if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERUP) {
delete this.trackedPointers_;
} else if (mapBrowserEvent.type ==
ol.MapBrowserEvent.EventType.POINTERDOWN) {
this.trackedPointers_ = event;
} else if (event.pointerId in this.trackedPointers_) {
// update only when there was a pointerdown event for this pointer
this.trackedPointers_ = event;
}else{
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓兼容华为银河麒麟桌面系统浏览器地图无法拖拽问题↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
this.trackedPointers_["1"] = event;
}
this.targetPointers = ol.object.getValues(this.trackedPointers_);
}困扰我这么久的问题居然一句话就能搞定~~
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]