簡體   English   中英

為什么用 ArcGIS API JS 加載 WMS 圖層這么慢?

[英]Why is loading a WMS layer with ArcGIS API JS is that slow?

我想知道 arcgis API JS 加載 WMS 圖層的速度有多慢是否正常。 這是一個例子:

<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
    <title>Intro</title>
    <style>
        html,
        body,
        #viewDiv {
            padding: 0;
            margin: 0;
            height: 100%;
            width: 100%;
        }
    </style>

    <link rel="stylesheet" href="https://js.arcgis.com/4.17/esri/css/main.css">
    <script src="https://js.arcgis.com/4.17/"></script>
    <script>
        require(["esri/Map", "esri/views/MapView", "esri/layers/WMSLayer", "esri/widgets/LayerList"], function(
            Map,
            MapView,
            WMSLayer,
            LayerList,
        ) {
            const map = new Map({
                basemap: "streets-navigation-vector"
            });

            const view = new MapView({
                container: "viewDiv",
                map: map,
                zoom: 3,
                center: {
                    latitude: 32.7353,
                    longitude: -117.1490
                }
            });
            var layer_precipitations = new WMSLayer({
                url: "https://geo.weather.gc.ca/geomet?",
                title: "Précipitation radar",
                sublayers: [{
                    name: "RADAR_1KM_RRAI",
                    title: "precipitations",
                    popupEnabled: false,
                    queryable: false,
                    visible: true,
                }, ],
                visible: true,
            });

            map.add(layer_precipitations);

            var layerList = new LayerList({
                view: view,
            });
            view.ui.add(layerList, {
                position: "top-left"
            });
        });
    </script>
</head>

<body>
    <div id="viewDiv"></div>
</body>

</html>

該頁面用 chrome 加載大約需要 4 秒,用 firefox 加載大約需要 8 秒。如果我嘗試用 leaflet 或 openlayers 加載同一層,它甚至不需要 1 秒。 任何人都知道我怎樣才能讓它更快? 謝謝! 於連

編輯:Leaflet 與 ArcGIS 基礎知識

你的評論讓我仔細看看。 我為 arcgis 和 leaflet 版本都創建了 codepens,但是如果不發布代碼就不讓我發布鏈接,我認為這有點傻,所以請參閱鏈接評論。 速度的差異在於每個庫用來拉取層的底層方法。 查看 leaflet 版本的 .network 選項卡:

在此處輸入圖像描述 :

如您所見,leaflet 接受請求並將其分解成小塊,分成小塊。 由於所有這些請求都是同時發出的,而且每個請求都較小,因此整個響應的返回速度更快,每個圖塊平均需要 800 毫秒才能獲得。

我們來看看ArcGIS的方法:

在此處輸入圖像描述

如您所見,ArcGIS 獲取當前 map 范圍的整個圖像 這需要更長的時間——在我的例子中,大約 2 秒。 我不確定為什么您會得到長達 4 秒和 8 秒的響應時間,但您現在至少可以明白為什么會有差異。

因此,歸結為每個庫處理 wms 請求的方式存在根本差異。 ArcGIS 很棒,但在某些事情上確實比 leaflet 慢了一點。Leaflet 一直在不懈地優化速度,但不具備 arcgis 所具有的所有內置功能。 我認為 2 秒的響應時間可能沒問題,但在較慢的連接上,8 秒有點不可接受。 很長一段時間以來,這一直是我對 arcgis 的不滿,但正如我所說,我們要選擇最適合給定應用程序需求的庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM