。
dojo.require( “esri.map”);var mapLayer;var mapUrl;function init(){ //使用ajax获取地图网址 fecthData(” MapInfo的 </跨度> ?id = 1“,function(d){mapUrl = d.mapUrl;});
map = new esri.Map(“map”); //如果嗯
现在好了。
dojo.require("esri.map"); var mapLayer; var mapUrl; function init() { fecthData("MapInfo?id=1",getMapInfo); } function getMapInfo(data) { mapUrl= data.mapUrl; if ( mapUrl== undefined ) return; map = new esri.Map("map"); mapLayer = new esri.layers.ArcGISDynamicMapServiceLayer(mapUrl); if ( mapLayer == undefined ) return; map.addLayer(mapLayer); dojo.connect(mapLayer, "onLoad", initFunc); } function fecthData(varUrl, varFunc) { var options = { type: "POST", url: varUrl, data: "", contentType: "application/json;charset=utf-8", dataType: "json", cache: false, success: varFunc }; //execute the ajax call and get a response var request = $.ajax(options); } dojo.addOnLoad(init);
看起来你的“fecthData”会在你的“init”执行结束后得到响应。我猜你应该在你的“fecthData”完成后立即启动地图,如下所示:
dojo.require("esri.map"); var map, mapUrl, mapLayer; function init() { fecthData("MapInfo?id=1"); } function fecthData(varUrl) { var options = { type: "POST", url: varUrl, data: "", contentType: "application/json;charset=utf-8", dataType: "json", cache: false, success: function (d) { mapUrl = d.mapUrl; if ( mapUrl == undefined ) return; map = new esri.Map("map"); mapLayer = new esri.layers.ArcGISDynamicMapServiceLayer(mapUrl); dojo.connect(map, "onLoad", someFunction); // layer object doesn't have any onLoad event, so I changed it map.addLayer(mapLayer); } }; var request = $.ajax(options); } dojo.addOnLoad(init);
或类似的东西