Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular9 创建特征后,当新数据出现时,我将替换图层源,但在地图上仍然可以看到删除的特征(ArcGIS js api 4)_Angular9_Arcgis Js Api - Fatal编程技术网

Angular9 创建特征后,当新数据出现时,我将替换图层源,但在地图上仍然可以看到删除的特征(ArcGIS js api 4)

Angular9 创建特征后,当新数据出现时,我将替换图层源,但在地图上仍然可以看到删除的特征(ArcGIS js api 4),angular9,arcgis-js-api,Angular9,Arcgis Js Api,我创建了一个功能层,每隔5秒,外部服务就会以JSON格式获取新数据。当新数据出现时,我用新数据覆盖要素图层源,并调用layer.refresh方法。我所观察到的仍然是地图上未删除的旧数据,若弹出窗口打开,则内容不会更新。 我不想使用apply edits.by creati 问题: 当我替换/覆盖图层源时,地图上仍有一些旧的删除特征,弹出窗口中未反映更新的数据 问题: 覆盖要素图层源后如何更新地图和弹出内容下一个代码显示源属性是初始化本地要素图层的选项。为了操作这些功能,您需要使用applyEd

我创建了一个功能层,每隔5秒,外部服务就会以JSON格式获取新数据。当新数据出现时,我用新数据覆盖要素图层源,并调用layer.refresh方法。我所观察到的仍然是地图上未删除的旧数据,若弹出窗口打开,则内容不会更新。 我不想使用apply edits.by creati

问题: 当我替换/覆盖图层源时,地图上仍有一些旧的删除特征,弹出窗口中未反映更新的数据

问题
覆盖要素图层源后如何更新地图和弹出内容

下一个代码显示
属性是初始化本地
要素图层
的选项。为了操作这些功能,您需要使用
applyEdits

添加和删除功能时,查看
源代码的长度。[剧透,永远不会变]

我认为你正在试验的问题与我提到的有关


用于JavaScript Hello World应用程序的ArcGIS API
html,
身体,
#视窗{
填充:0;
保证金:0;
身高:100%;
宽度:100%;
}
要求([
“esri/Map”,
“esri/views/MapView”,
“esri/图层/功能图层”,
“esri/图形”
],功能(地图、地图视图、要素图层、图形){
常数quakesUrl=
'https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/ks_earthquakes_since_2000/FeatureServer/0';
const quakesLayer=新功能层({
url:quakesUrl,
可见:假
});
让lastAddFeatureResults=[];
const resultsLayer=新功能层({
资料来源:[],
geometryType:'点',
渲染器:{
键入:“简单”,
符号:{
类型:“简单标记”,
风格:'圆圈',
大小:`8px`,
颜色:[255,0,0,6],
大纲:{
颜色:'黑色',
宽度:“0.5px”
}
}
},
字段:[
{
名称:“OBJECTID”,
别名:“ObjectID”,
类型:“oid”
},
{
名称:'时间',
别名:"时间",,
键入:“字符串”
},
{
名称:'mag',
别名:“震级”,
类型:'double'
},
{
名称:'magType',
别名:“震级类型”,
键入:“字符串”
},
{
名称:'地点',
别名:"地点",,
键入:“字符串”
},
{
名称:'类型',
别名:“类型”,
键入:“字符串”
}
],
popupEnable:true,
弹出模板:{
标题:“{place}”
}
});
常量映射=新映射({
底图:“灰色”,
图层:[QuakeLayer,resultsLayer]
});
const view=新地图视图({
容器:“viewDiv”,
地图:地图,
中心:[-97.75188,37.23308],
缩放:9
});
功能查询地震(mag){
const query=quakesLayer.createQuery();
query.where=`mag=${mag}`;
返回QuakeLayer.queryFeatures(查询);
}
函数显示结果(结果){
const addFeatures=results.features;
resultsLayer.applyEdits({
新增功能,
deleteFeatures:更新%2==0?lastAddFeatureResults:[]
})。然后(结果=>{
//console.log(results.addFeatureResults);
//console.log(results.deleteFeatureResults);
lastAddFeatureResults=更新%2==0?
results.addFeatureResults:
lastAddFeatureResults.concat(results.addFeatureResults);
console.log(`[after update${updates}]功能:${lastAddFeatureResults.length}源。长度:${resultsLayer.source.length}添加:${results.addFeatureResults.length}删除:${results.deleteFeatureResults.length}`)
});
}
函数updateLayer(){
更新++;
console.log(`[before update${updates}]功能:${lastAddFeatureResults.length}source.length:${resultsLayer.source.length}`)
console.timeLog(“更新层”);
queryEarthquakes(更新%2?3:4)。然后(显示结果);
}
控制台时间(“更新层”);
让更新=0;
updateLayer();
setInterval(updateLayer,5000);
});

你说“覆盖”是什么意思。。您需要使用
applyEdits
,在FeatureLayer中添加/更新/删除功能,
source
字段仅用于在创建时传递功能重写方式,而不是直接将编辑集/分配新图形应用到layer.source。应用编辑后,如果在图层中添加了任何新要素/图形,则layer.source.items未更改,它仍显示旧数据。为什么?是的,震源长度总是一样的。现在我正在使用应用编辑,但我在一个小时后观察到的贴图没有正确响应。我的意思是,当我平移或缩放地图时,它将花费时间。这是因为我每5秒钟更新200-300条记录,用于多个层(最多3-4层)?