首页 > 解决方案 > mapkitJS 和 ArcGIS esri-loader 的 dojo multipleDefine 错误

问题描述

我不知道哪里MapkitJSesri-loader问题,在一起有问题。从这里和其他地方的研究来看,似乎与另一个包可能存在命名冲突。这是已解决问题的链接esri-loader。我阅读了该链接上的所有页面。

我有一个同时使用MapkitJs和的网站ArcGISMapkit在我带进来之前一直工作得很好ArcGIS。这两个脚本都是通过提供者延迟加载的。在阅读了这些问题之后,我等到Mapkit被初始化后再加载ArcGIS脚本。

我注意到的第一件事是旋转地图的能力Mapkit立即消失了(它加载,然后在大约 1/2 秒后将其删除)。那是我第一次暗示有些事情是矛盾的。

如果我删除加载脚本esri-loader的 call loadModules,则旋转再次起作用。如果我再次添加它(即使我没有指定要添加的任何模块),它也会中断Mapkit旋转。

这是主要问题。如果我先创建mapkit地图,然后尝试创建 ArcGIS 地图,则会弹出错误。但是如果我先创建一个ArcGIS地图,然后再创建mapkit,就可以了(除了apple mapkit地图不能旋转)。

我希望我能提供更多信息,但我什至不知道从哪里开始。请问你需要什么...

我上传了一个演示页面到我的网站。如果您访问https://dieselplanning.com/,它将首先加载 Esri 地图。它有效,您可以切换地图(侧边栏中的左下按钮)。您还将在苹果地图上看到右下角的罗盘上升一秒钟,因为它接受旋转,然后在创建后不久决定不旋转。

但是,如果您访问https://dieselplanning.com/test,它与页面完全相同ao,但它首先会创建一个 mapkit 地图。这会在您交换地图时产生问题。

在此处输入图像描述

标签: javascriptreactjsdojoarcgis-js-apiesri-loader

解决方案


如果您研究这些多重定义,通常会有另一个库创建问题,常见的答案是在这些库之后加载 ArcGis 脚本或使用 dojo 加载库。

我意识到这里的问题是,当您制作 Mapkit 地图时,它会加载更多脚本。因此,加载 mapkit API 会加载脚本,然后创建 mapkit 地图会加载更多脚本。所以我要做的是加载 mapkit API。创建地图,然后将其销毁,然后加载 ArcGis API。之后它就起作用了。

现在的问题是弄清楚 create Map 何时完成所有调用,它没有方法或侦听器来告诉您何时完成。


推荐阅读