我在使用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'
答案 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>