0

関数 fecthData を使用して mapUrl を取得できます。しかし、地図を表示することはできません。アラート行コードにコメントを付けると、マップが表示されます。誰でも私にいくつかのヒントを教えてもらえますか?前もって感謝します。

dojo.require("esri.map");
var mapLayer;
var mapUrl;
function init() {
   // use ajax to get map url
   fecthData("MapInfo?id=1", function (d) {mapUrl = d.mapUrl;});

   map = new esri.Map("map");
   // if um-commented below line, the map will show
   //alert("mapUrl"+mapUrl);

   // map layer
   mapLayer = new esri.layers.ArcGISDynamicMapServiceLayer(mapUrl);
   if ( mapLayer == undefined )
       return;
   dojo.connect(mapLayer, "onLoad", initFunc);
   map.addLayer(mapLayer);
}
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);
4

2 に答える 2

0

「init」の実行が終了した後、「fecthData」が応答を取得するように見えます。次のように、「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);

またはそのようなもの

于 2012-12-06T16:05:08.997 に答える
0

今は大丈夫です。

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);
于 2012-12-10T05:54:15.940 に答える