2012-11-15 31 views
0

我可以得到mapUrl使用函數fecthData。 但它不能顯示地圖。 ,如果我呃評論警戒線代碼,它會顯示地圖。 任何人都可以給我一些提示? 在此先感謝。ArcGIS Javascript API - 如何使用jQuery獲取地圖URL ajax

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

回答

0

看起來像你的「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); 

或類似的東西

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); 
相關問題