Javascript 在Esri映射上删除pin后,如何停止自动保存页面?

Javascript 在Esri映射上删除pin后,如何停止自动保存页面?,javascript,model-view-controller,esri,arcgis-js-api,Javascript,Model View Controller,Esri,Arcgis Js Api,我正在做一个MVC项目。我已在视图中集成了Esri地图。以前我可以在地图上放一个大头针,得到坐标并保存它们。但最近,我不知道出了什么问题。出于某种原因,当我在地图上放置一个pin时,甚至会触发保存,它会保存除坐标以外的所有其他数据。它还会关闭页面。我已经调查过了,我不能指出这个问题。请帮忙。请参见下面视图中集成地图的代码: <script type="text/javascript"> var latitude; var longitude; var zoom

我正在做一个MVC项目。我已在视图中集成了Esri地图。以前我可以在地图上放一个大头针,得到坐标并保存它们。但最近,我不知道出了什么问题。出于某种原因,当我在地图上放置一个pin时,甚至会触发保存,它会保存除坐标以外的所有其他数据。它还会关闭页面。我已经调查过了,我不能指出这个问题。请帮忙。请参见下面视图中集成地图的代码:

<script type="text/javascript">
    var latitude;
    var longitude;
    var zoomLevel;
    require(["esri/views/MapView",
        "esri/WebMap", "esri/config",
        "esri/widgets/Sketch",
        "esri/layers/GraphicsLayer"],

        function (MapView, WebMap, esriConfig, Sketch, GraphicsLayer) {

            esriConfig.portalUrl = "https://portal.environment.gov.za/portal";
            var webmap = new WebMap({
                portalItem: {
                    id: "04582be14885483da48f29398960f653"
                }
            });

            var graphicsLayer = new GraphicsLayer();

            var view = new MapView({
                map: webmap,
                //zoom: 14,
                container: "viewDiv"
            });

            var symbol = {
                type: "simple-marker", // autocasts as new SimpleMarkerSymbol()
                style: "circle",
                color: "blue",
                size: "8px", // pixels
                outline: { // autocasts as new SimpleLineSymbol()
                    color: [255, 255, 0],
                    width: 1 // points
                }
            };

            webmap.layers.add(graphicsLayer);

            var sketch = new Sketch({
                layer: graphicsLayer,
                view: view,
                symbol: symbol,
                creationMode: "update",
                availableCreateTools: ["point"]
                //container: "viewDiv"
            });

            view.ui.add(sketch, {
                position: "top-right"
            });

            //Listen to sketch widget's create event.

            sketch.on('create', function (event) {
                 // check if the create event's state has changed to complete indicating
                 // the graphic create operation is completed.
            if (view.zoom >= 11) {                  
                let gra = event.graphic.clone();
                event.graphic.layer.removeAll();
                gra.symbol.color = "red";
                gra.layer.add(gra);
                console.log(view.zoom);
                console.log("X = ", gra.geometry.x);
                console.log("Y = ", gra.geometry.y);
                latitude = gra.geometry.x;
                longitude = gra.geometry.y;
                zoomLevel = view.zoom;
                debugger;
            }
            else {
                alert("please zoom in");
                event.graphic.layer.remove(event.graphic);
            }
            });

        });
    function saveCoordinates() {
        debugger;
        $("#lat").val(latitude);
        $("#long").val(longitude);
    };
</script>

纬度;
var经度;
var zoomLevel;
需要([“esri/views/MapView”,
“esri/WebMap”、“esri/config”,
“esri/widgets/Sketch”,
“esri/layers/GraphicsLayer”],
功能(地图视图、网络地图、esriConfig、草图、GraphicsLayer){
esriConfig.portalUrl=”https://portal.environment.gov.za/portal";
var webmap=新的webmap({
portalItem:{
id:“04582be14885483da48f29398960f653”
}
});
var graphicsLayer=新的graphicsLayer();
var view=新的地图视图({
地图:网络地图,
//缩放:14,
容器:“viewDiv”
});
变量符号={
类型:“simple marker”,//自动广播为新的SimpleMarkerSymbol()
风格:“圆圈”,
颜色:“蓝色”,
大小:“8px”,//像素
大纲:{//自动广播为新的SimpleLineSymbol()
颜色:[255,255,0],
宽度:1//点
}
};
webmap.layers.add(graphicsLayer);
var草图=新草图({
图层:graphicsLayer,
视图:视图,
符号:符号,,
creationMode:“更新”,
可用的创建工具:[“点”]
//容器:“viewDiv”
});
view.ui.add(草图、{
位置:“右上方”
});
//收听sketch小部件的创建事件。
“创建”功能(事件)上的草图{
//检查创建事件的状态是否已更改为“完成”
//图形创建操作已完成。
如果(view.zoom>=11){
设gra=event.graphic.clone();
event.graphic.layer.removeAll();
gra.symbol.color=“红色”;
gra.layer.add(gra);
console.log(view.zoom);
console.log(“X=”,gra.geometry.X);
console.log(“Y=,gra.geometry.Y”);
纬度=gra.geometry.x;
经度=gra.geometry.y;
zoomLevel=view.zoom;
调试器;
}
否则{
警报(“请放大”);
event.graphic.layer.remove(event.graphic);
}
});
});
函数saveCoordinates(){
调试器;
$(“纬度”).val(纬度);
$(“#长”).val(经度);
};
如何添加地图:

<div class="panel-body">
        <div class="form-group">
            <div id="viewDiv" style="position:relative; width:900px; height:600px; border:1px solid #000;"></div>
        </div>
    </div>

然后单击“保存”按钮:

<div class="form-group">
    <div class="col-md-10">
        <input type="submit" class="btn btn-primary" id="savebutton" value="Save" onclick="validateForm(); saveCoordinates()" />
        @Html.ActionLink("Cancel", "Index", "Application", null, new { @class = "btn btn-primary", @id = "cancelbutton" })
    </div>
</div>

@ActionLink(“取消”,“索引”,“应用程序”,null,新的{@class=“btn btn primary”,@id=“cancelbutton”})

使用
sketch.on('create',函数)
只要在草图中创建了新的内容,就会触发该函数。如果这是一条多段线,则每次在多段线中创建新点时都会触发
“创建”
事件。如果您查看esri JavaScript APi,他们会对此发出警告,并提供仅在用户接受其草图时才会触发的代码示例:

//侦听sketch小部件的创建事件。
草图。关于(“创建”,功能(事件){
//检查创建事件的状态是否已更改为“完成”
//图形创建操作已完成。
如果(event.state==“完成”){
//在这里做事
}
}
谢谢R10t——让我试试。