2012-11-15 32 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); 
相关问题