dojo.require语句未按预期加载esri映射模块
我正在开发一个php应用程序,使用“arcgis”API加载地图。请在下面找到URL:dojo.require语句未按预期加载esri映射模块,dojo,require,arcgis,esri,arcgis-js-api,Dojo,Require,Arcgis,Esri,Arcgis Js Api,我正在开发一个php应用程序,使用“arcgis”API加载地图。请在下面找到URL: http://js.arcgis.com/3.11/ 为了在我的应用程序中加载arcgis地图,我必须使用 dojo.require("esri.map"); 因此,在我的单页PHP应用程序中,我添加了以下require语句: <script type="text/javascript"> dojo.require("esri.map"); </script> 但是当我运行
http://js.arcgis.com/3.11/
为了在我的应用程序中加载arcgis地图,我必须使用
dojo.require("esri.map");
因此,在我的单页PHP应用程序中,我添加了以下require语句:
<script type="text/javascript">
dojo.require("esri.map");
</script>
但是当我运行这个应用程序时,在“this.map=new esri.map(“mapDiv”,myOptions);”行中出现了一个错误:“uncaughttypeerror:undefined不是一个函数”
如果我打开开发工具,通过在require和esri.Map语句中保留断点来运行相同的代码,我可以看到映射正在加载。但是如果我运行它而不打开开发工具,那么我就面临这个问题
为什么dojo.require语句不能按预期工作?
我怎么了??
请回复您正在尝试加载带有旧模块要求的映射模块。尝试使用AMD语法要求映射,如所示:
require([“esri/map”],函数(map){/*代码在这里*/})代码>您需要将JavaScript代码包装在对dojo.ready
的调用中
HTML文件:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>JavaScript in Separate File</title>
<link rel="stylesheet" href="http://js.arcgis.com/3.11/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="http://js.arcgis.com/3.11/esri/css/esri.css">
<style>
html, body { height: 100%; width: 100%; margin: 0; padding: 0; }
#mapDiv{padding:0;}
</style>
<script>var dojoConfig = {parseOnLoad: true};</script>
<script src="//js.arcgis.com/3.11/"></script>
<script src="code.js"></script>
<script>
dojo.require("esri.map");
dojo.require("esri.layers.agstiled");
</script>
</head>
<body class="claro" >
<div id="mapDiv"></div>
</body>
</html>
我也尝试过。但在我的应用程序中,我必须在其他地方初始化map,而不是在require函数中初始化它。原因是我的应用程序使用的是Backbone.js,我不能在视图中直接包含此代码。所以我做了下面的var赋值;要求([“esri/map”],函数(map){mapAssign=map});在一个视图中,我使用了以下代码:this.map=newmapsign(“mapDiv”,myOptions);在这样做的时候,我得到了同样的问题,因为require函数不是首先命中的。相反,映射初始化是先命中的。我用主干视图和esri映射创建了一个可以查看的。我建议你多了解AMD
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>JavaScript in Separate File</title>
<link rel="stylesheet" href="http://js.arcgis.com/3.11/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="http://js.arcgis.com/3.11/esri/css/esri.css">
<style>
html, body { height: 100%; width: 100%; margin: 0; padding: 0; }
#mapDiv{padding:0;}
</style>
<script>var dojoConfig = {parseOnLoad: true};</script>
<script src="//js.arcgis.com/3.11/"></script>
<script src="code.js"></script>
<script>
dojo.require("esri.map");
dojo.require("esri.layers.agstiled");
</script>
</head>
<body class="claro" >
<div id="mapDiv"></div>
</body>
</html>
dojo.ready(function() {
var myOptions = {
maxZoom: 20,
minZoom: 3,
zoom:5,
isZoomSlider: false,
sliderStyle: "large",
sliderPosition: "top-right"
};
this.map = new esri.Map("mapDiv", myOptions);
var layer = new esri.layers.ArcGISTiledMapServiceLayer(
"http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer");
this.map.addLayer(layer);
});