操作系统数据集线器无法在iPad或iPhone上工作



我负责一个网站,该网站为在英格兰西南部散步的人显示英国军械调查局的地图,它依赖于在操作系统地图上显示一个标记,以响应字母数字的OSGB网格引用,作为查询字符串附加到显示地图的HTML文件的名称,或点击HTML文件生成的操作系统地图,在没有查询字符串的情况下。几年来,这一切都在Windows PC和移动设备上运行良好,使用基于OpenLayers 2的OS OpenSpace,但现在军械调查局决定实施一个基于Open Layers 6的新系统,并需要对JavaScript进行完整的重新编码。操作系统为各种场景提供了示例代码,从中我重新编写了代码,使其在带鼠标的Windows PC上完美运行,但在iPad或iPhone上失败了,尤其是在iPad使用了几年的情况下。

使用当前的苹果设备,我无法在操作系统地图上显示缩放的矢量图形,无论是在硬编码坐标下,还是在点击地图时。然而,点击会在点击点弹出一个弹出窗口,在地图上滑动会使其平移。使用几年前的iPad,除了上述问题外,张开两个手指不会缩放地图,滑动也不会平移地图。唯一有效的是地图上的+和-按钮。

我已经读到,我可能需要在我的地图命令中包括一个控制部分,大致如下:

controls: [
new OpenLayers.Control.TouchNavigation({
dragPanOptions: {
enableKinetic: true
}
}),
new OpenLayers.Control.Zoom()
],

但是,如果我包含此代码,我的JavaScript就会崩溃,并且MS Edge中的JavaScript错误控制台会给出错误消息"OpenLayers未定义">

英国军械调查局告诉我,我的问题"与映射库OpenLayers有关,而不是与我们的API有关",所以我的问题是,我如何让基于操作系统示例的代码在任何年龄的移动设备上运行,就像我现有的基于Open Layers 2的代码已经运行了几年一样?

我很乐意根据要求提供一份我的代码副本,该副本可以在Windows PC上使用,但不能在苹果设备上使用。

OpenLayers需要在较旧的设备/浏览器上使用polyfill。尝试添加

<script src="https://unpkg.com/elm-pep"></script>
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch,requestAnimationFrame,Element.prototype.classList,URL"></script>

在CCD_ 1脚本之前。默认控件应该足够了(您使用的代码是Openlayers 2格式,不适用于Openlayers 6(。

最新更新