多个javascript(不同版本)冲突

Multiple javascript(different version) conflict

本文关键字:版本 冲突 javascript 多个      更新时间:2023-09-26

我在同时使用两个API时遇到了一些问题,OneMap API和ESRI(Arcgis)API。

我的问题是,我想使用OneMap API,它基于ESRI(Arcgis)API,但OneMap的API中缺少一些功能,我需要这些功能来完成我的任务,例如featureLayer。在ESRI(Arcgis)API中找到的featureLayer正是我所需要的,我已经尝试包括两个API来调用featureLayer,但会有错误,地图不会显示。我想这可能是一个冲突,因为我可以单独使用API。

我之所以选择使用OneMap,是因为它专注于新加坡,与ESRI的地图相比,地图上的信息更详细/更新。

那么,当使用我上面提到的2 API时,有没有一种方法可以防止这种冲突?或者在函数需要时,是否需要指定何时使用哪种API?

编辑:这是错误消息,

Uncaught TypeError: Cannot read property 'dojo' of undefined 
Uncaught TypeError: Object #<Object> has no method '_loadPath' 

根据错误消息,您的一个库似乎需要Dojo库。在包含其他两个库之前,您应该先尝试包含它。

一旦它被包含在其他库之前,您应该会看到这些错误消息消失。

将创建映射的代码本身需要包含在DojodomReady插件中:

  <script>
    require(["esri/map", "dojo/domReady!"], function(Map) { 
      // code to create the map and add a basemap will go here 
    });
  </script>

我不知道这些库中任何一个的具体情况,但这似乎至少应该让你克服这些错误(可能会出现一些新的错误,但我们可以在它们发生时处理它们)。

根据ArcGIS站点的一个示例,Dojo或其某些部分可能已经包含在内。在包含库的地方检查一下,然后在dom ready上加载地图(您还需要包含地图样式并创建一个HTML元素来保存地图(在这种情况下,是一个ID为"mapDiv"的div:

 <script src="http://js.arcgis.com/3.7/"></script>
  <script>
    var map;
    require(["esri/map", "dojo/domReady!"], function(Map) {
      map = new Map("mapDiv", {
        center: [-56.049, 38.485],
        zoom: 3,
        basemap: "streets"
      });
    });
  </script>