在 EPSG 中使用 ARCGIS JavaScript 时缩小按键事件无效:3826

问题描述 投票:0回答:1

我是 ARCGIS JAVASCRIPT 的新手。当tileLayer加载时我遇到了一个问题,我在右上角设置的缩放控制器不能正常工作。加号按钮只能被调用事件两三次,然后就不再起作用,而减号按钮可以很好地工作。在鼠标的另一个方面,鼠标滚轮事件可以完美地缩小/放大。我的版本是4.10,我的环境是node.js和express,代码片段如下:

const basemap = new Basemap({
    baseLayers: [
        new TileLayer({
            url: "https://arcgis.tpgos.gov.taipei/arcgis/rest/services/ED/GD_Plain_Service/MapServer",
            title: "Basemap",
            crossOrigin: 'anonymous',
            spatialReference: {
                wkid: 102443
            }
        })
    ],
    title: "basemap",
    id: "basemap",
    spatialReference: {
        wkid: 102443
    }
});


// Create a map using the MapImageLayer
var map = new Map({
    basemap: basemap
});


var view = new MapView({
    container: "divmap",
    map: map,
    zoom: 3,
    extent: {
        xmin: 296938.73458000005,
        ymin: 2776832.77203,
        xmax: 301876.2566600001,
        ymax: 2781271.34259,
    },
    crossOrigin: 'anonymous',
    spatialReference: {
        wkid: 102443
    } // Set the spatial reference
   
});
view.ui.move("zoom", "top-right");

有人知道具体原因吗?以及如何解决这个问题,非常感谢。

javascript gis arcgis arcgis-js-api
1个回答
0
投票

这实际上是一个奇怪的问题,不确定是什么原因造成的。但我给你一个有点肮脏的解决方案,只需破解

zoomIn
小部件的
Zoom
方法即可。为此,您将需要一个新的小部件视图模型。

<html lang="en">

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
    <title>Hack Zoom zoomIn Method Sample | ArcGIS Maps SDK for JavaScript 4.28</title>
    <style>
        html,
        body,
        #viewDiv {
            padding: 0;
            margin: 0;
            height: 100%;
            width: 100%;
        }
    </style>

    <link rel="stylesheet" href="https://js.arcgis.com/4.28/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.10/"></script>

    <script>
        require([
            "esri/Map",
            "esri/views/MapView",
            "esri/Basemap",
            "esri/layers/TileLayer",
            "esri/widgets/Zoom",
            "esri/widgets/Zoom/ZoomViewModel",
        ], (Map, MapView, Basemap, TileLayer, Zoom, ZoomVM) => {
            const basemap = new Basemap({
                baseLayers: [
                    new TileLayer({
                        url: "https://arcgis.tpgos.gov.taipei/arcgis/rest/services/ED/GD_Plain_Service/MapServer",
                        title: "Basemap",
                        crossOrigin: 'anonymous',
                        spatialReference: {
                            wkid: 102443
                        }
                    })
                ],
                title: "basemap",
                id: "basemap",
                spatialReference: {
                    wkid: 102443
                }
            });

            const map = new Map({
                basemap
            });

            const view = new MapView({
                container: "viewDiv",
                map,
                zoom: 3,
                extent: {
                    xmin: 296938.73458000005,
                    ymin: 2776832.77203,
                    xmax: 301876.2566600001,
                    ymax: 2781271.34259,
                },
                spatialReference: {
                    wkid: 102443
                }
            });
            view.ui.components = [];
            let zoomVM = new ZoomVM({view});
            zoomVM.zoomIn = () => {
                view.goTo({center: view.center, zoom: view.zoom + 1});
            };
            let zoom = new Zoom({
                viewModel: zoomVM
            });
            view.ui.add(zoom, "top-right");
        });
    </script>
</head>

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

</html>

© www.soinside.com 2019 - 2024. All rights reserved.