Gis arcgis JavaScript 地图动态加载地图 6C

需求如下,在点击按钮时,根据相关按钮ajax 取得对应的 地图地址,大概想搞成的类似于这样的效果。
function initMap()
{
$.post("/myMap/GetMapUrl",
{ Param:txtName},
function (data, status) {
data = JSON.parse(data);
var view;
var map;
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/MapImageLayer",
"esri/widgets/LayerList",
"esri/widgets/Search",
"dojo/domReady!"
], function (Map, MapView, MapImageLayer, LayerList, Search) {
map = new Map("mapDiv");

        var layer = new MapImageLayer({
            url: Data  //根据ajax 取得的地址

        })
        map.add(layer);

        view = new MapView({
            container: "mapDiv",  // Reference to the DOM node that will contain the view
            map: map               // References the map object created in step 3
        });

    });
              }

}

然后其他地方 的Btn 点击的时候调用,但现在存在 如果这么搞 会死循环导致网页崩溃卡死,如果
require(["esri/layers/MapImageLayer"]);
require(["esri/layers/LayerList"]);
require(["esri/Map"]);
require(["esri/views/MapView"]); 这样申请全局变量 在其他 function 中 还是找不到 map.addLayer(layer2); 的方法 提示 未定义等

3个回答

反复看了下确实没弄清你说得,如果页面卡死,问题肯定存在于你的请求触发方式,具体问题直接用语言阐述。

建议先实例化地图,若不需要显示则初始化后隐藏,然后在ajax返回请求后,再实例化图层,然后加入到地图中。
并且未保证切片地图服务和动态地图服务都可以正常使用,建议在实例化地图时,加载一个切片地图作为底图,如不想显示可以隐藏。
具体代码可以按照如下方式实现:

//地图初始化
require("esri.Map");
require("esri.layers.ArcGISTiledMapServiceLayer");
var map = new esri.map("mapdiv",{
basemap:new esri.layers.ArcGISTiledMapServiceLayer("url")
});
var MapImageLayerUrl = "";
//ajax获取MapImageLayer的URL地址
//按钮触发时显示地图,并实例化MapImageLayer并添加到地图中


建议设置全局对象app={},在require的function里,设置一个可以外部调用的方法app.method,这个方法内部写ajax。
形如
var app={};
require([],function(){
new Map....
app.Method=function(){
$.post(,,function(){
new Layer....
map.add....
})
}
})

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐