ArcGIS Javascript 異常之No 'Access-Control-Allow-Origin' header


本文只描述現象與處理措施,不討論原理。

開發過程中遇到此異常,查詢后網上說是跨域訪問的問題,給出的解決方案是通過JQuery的跨域訪問機制來解決,

難道我需要直接找ArcGISTiledMapServiceLayer相關代碼,去重構嗎?

還有給出的解決方案如下,http://resources.arcgis.com/en/help/rest/apiref/config.html,大意就是要設置一下ArcGIS Server服務,可服務是別人的,設置不了。

 

代碼如下,在地圖類型切換時需要調用另一個網址,就報出了如下錯誤。

if (tp == "mp") {
            //移除之前
            map.removeLayer(basemap);
            //地圖
            basemap = new ArcGISTiledMapServiceLayer("http://xxx.xxx.xxx.xxx.xxx.xxx");
            $("#mptype").val("mp");
            map.addLayer(basemap);
        }

實際上兩個圖層域名是差不多的,不知道為什么出現這個問題。

后來嘗試了下,在地圖初始化的時候就實例化兩個ArcGISTiledMapServiceLayer,在地圖切換的時候進行圖層的添加、刪除,不進行實例化,即解決問題。

大致代碼如下:

function loadMap(lnt,lat,zo0o) {
    zoom=zo0o;
    require(["esri/map", "esri/toolbars/navigation", "esri/layers/ArcGISTiledMapServiceLayer"], function (Map, Navigation, ArcGISTiledMapServiceLayer) {
        options = { logo: false,
            fadeOnZoom: true,
            slider: true,
            sliderPosition: "bottom-left",
            sliderStyle: "large"
        };
        iniLat = lat;
        iniLnt = lnt;
        map = new esri.Map("mapDiv", options);
        basemap = new ArcGISTiledMapServiceLayer("http://xxx.xxx.xxx.xxx");
        annolayer = new ArcGISTiledMapServiceLayer("http://bb.bbb.ccc.ddd");
        map.addLayer(annolayer);
        spatialReference = map.spatialReference;

        map.on("mouse-down", function (evt) {
            console.log(evt.mapPoint.x.toFixed(3) + "," + evt.mapPoint.y.toFixed(3));
        });

        map.centerAndZoom(new esri.geometry.Point(lnt, lat), zoom);
        navToolbar = new Navigation(map);
    });
            }

地圖切換代碼修改如下:

function MapTypeSwitch(tp){
    require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer", "esri/config"], function (Map, ArcGISTiledMapServiceLayer, esriConfig) {
        esriConfig.defaults.io.corsDetection = false;
        if (tp == "mp") {
            //移除之前
            $("#mptype").val("mp");
            map.removeLayer(annolayer);
            map.addLayer(basemap);
        }
        
    });
            }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM