多个javascript(不同版本)冲突

时间:2013-12-18 05:22:41

标签: javascript jquery conflict esri

我在使用2个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' 

1 个答案:

答案 0 :(得分:1)

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

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

您的代码本身(将创建地图)需要包含在Dojo domReady插件中:

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

我对这些库中的任何一个都不知道任何具体内容,但看起来这至少应该让你超越这些错误(可能还有一些新错误,但我们可以在它们发生时处理它们)。

根据ArcGIS站点的示例,似乎可能已包含Dojo或其中的一部分。看看它们包含库的位置,然后在dom上加载地图(你还需要包含地图样式并创建一个HTML元素来保存地图(在这种情况下是一个ID为“mapDiv”的div:< / p>

 <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>