未捕获(在promise中)TypeError:无法读取null属性'setHighlight'

4554
4
11-10-2020 07:31
julienrobitaille"id="我magedisplay
新贡献者III

你好,

我使用ArcGIS api JS与一层多边形。当我点击一个多边形时,它会创建一个点层,与点击的多边形相交。当我点击一个点时,这个点就会被正确地高亮显示。

问题是,一旦我在一个点上点击了至少一次并突出显示了它,如果我然后点击一个多边形或地图上没有多边形的其他任何地方,就会出现这个错误:

未捕获(在promise中)TypeError:无法读取null属性'setHighlight'
在d.f._updateHighlight (mapviewdepth .js:773)
在d.f.removeHighlight (mapviewdepth .js:773)
在对象。删除(GraphicsLayerView2D.js:7)
在dc移除((index):751)
d. ((index):2352)
在g(指数):38时
在对象。下一个((指数):37)
(指数):37
at new Promise ()
在对象。F [as __awaiter] ((index):36)

当我再次点击一个点时,这个点就不再高亮了。但是弹出的工作很好。第一,亮点不工作。

我想知道属性“setHighlight”在哪里,我该如何避免这个问题?

如果我能确定房产的位置,我可能就能理解发生了什么。但是网上没有关于这个房产和这个问题的信息。

所以谢谢你的任何帮助,真的很感激!

朱利安

0荣誉
4回复
KavishGhime3"id="我magedisplay_0
通过
新贡献者II

@julienrobitaille

如果有任何代码逻辑问题或不正确的命名约定等,可能会发生“TypeError”。

此外,“setHighlight”属性不是类的API引用属性,我们可能认为它被破坏了,因此导致了这个问题。

如果没有示例应用程序,这个问题可能很难进一步排除故障。

谢谢,

0荣誉
julienrobitaille"id="我magedisplay_1
新贡献者III

你好,
谢谢你的回复。

下面是我的代码示例。我试图摆脱所有仍然会重现错误的东西:

< ! 文档类型 超文本标记语言 >
< 超文本标记语言 “en” >

< >
< 脚本 类型 “text / javascript” src http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js >
脚本 >
< 脚本 类型 “text / javascript” src https://d3js.org/d3.v6.js > 脚本 >
< 链接 rel “样式表” href https://js.arcgis.com/4.17/esri/themes/dark/main.css >
< 脚本 src https://js.arcgis.com/4.17/ > 脚本 >
< 脚本 >
需要 ([ // require加载模块
“esri /地图”
“esri /视图/ MapView”
“esri / widget / BasemapToggle”
“esri /层/ OGCFeatureLayer”
“esri /图形”
“esri /层/ GraphicsLayer”
“esri几何/点”
], 函数 地图 MapView BasemapToggle OGCFeatureLayer 图形 GraphicsLayer ) {

var 地图 地图 ({
基础图: “topo-vector”
});

var 视图 MapView ({
容器: “viewDiv”
地图: 地图
中心: (- - - - - - 68.80500 47.02700 ], //经度,纬度
缩放: 7
});

//加载站点信息:
var = [];

ajax ({ // TODO:修复CORS错误-以及Access-Control-Allow-Origin报头
类型: “获得”
异步:
contentType: application / json的;charset = utf - 8 '
成功 函数 json ) {
json
}
});


/ /加载区域
var layer_regions OGCFeatureLayer ({
url: “http://localhost: 32768 / geoserver / OGSL /[/功能/”
collectionId: “OGSL: test_create_shp_exposed”
legendEnabled: 真正的
popupEnabled: 真正的
名称: “layer_regions”
可见: 真正的
标题: “区域”
渲染器: {
类型: “简单”
符号: {
类型: “simple-fill”
},
}
});
地图 添加 layer_regions );


视图 “点击”
函数 事件 ) {
/ / console.log(事件)
视图 hitTest 事件 ). 然后 getGraphics ). 然后 buildLayer );

});

函数 getGraphics 响应 ) {

//在vacrify上,我们将使用dacrify和dacrify
var foundLayers 地图 allLayers 找到 函数 ) {
返回 名字 === “stationsLayerTrue”
});
控制台 日志 “foundlayers” foundLayers
//Si on clique sur un couche de type polygone

如果 响应 结果 0 ]. 图形 几何 ) {

如果 响应 结果 0 ]. 图形 几何 类型 === “多边形” ) {

var 几何 响应 结果 0 ]. 图形 几何
//我把所有的工作都做了,然后把所有的工作都做了
如果 foundLayers ) {
地图 删除 foundLayers
}

//在变焦后,我看到了聚乙二醇
视图 转到 响应 结果 0 ]. 图形 几何 );
var popupActive

返回 几何
}
} 其他的 {
var foundLayers 地图 allLayers 找到 函数 ) {
返回 名字 === “stationsLayerTrue”
});

如果 foundLayers ) {
地图 删除 foundLayers
}
返回
}
}

函数 buildLayer polygoneClique ) {

/ / console.log(“保利”,polygoneClique)
如果 polygoneClique ) {
//在crassei上,一个沙发可以容纳几个站
var stationsLayerTrue GraphicsLayer ({
可见: 真正的
标题: “stationsLayerTrue”
名称: “stationsLayerTrue”
});
地图 添加 stationsLayerTrue );

0 < 长度 + +) {

var ({
经度: ] [ “经” ],
纬度: ] [ “人肉搜索” ],
spatialReference: {
wkid: 3857
}
})

var 相交 polygoneClique 包含


如果 相交 ) {

var pointGraphicTrue 图形 ({
几何:
符号: {
类型: “简单”
颜色: “# d7191c” / /红色
},
popupTemplate: {
标题: “{officialName}”
},
属性: {
id: ] [ “id” ],
officialName: ] [ “officialName” ],
}
});

stationsLayerTrue 添加 pointGraphicTrue );
}

}
}

}

});
脚本 >
< 风格 >
超文本标记语言
身体
# viewDiv {
位置 绝对
0
正确的 0 px
0
0
高度 100%
}
.esri-legend__layer-caption {
显示 没有一个
}
风格 >
>


< 身体 >
< div id “viewDiv” > div >
身体 >

超文本标记语言 >
如你所见,如果你点击一个区域,然后点击另一个点,高亮效果很好。但如果你点击另一个区域,再点击一个点,错误就出现了。
知道为什么会这样吗?
谢谢你!
朱利安
0荣誉
julienrobitaille"id="我magedisplay_2
新贡献者III

非常抱歉,上面的代码有一个小错误。如果你可以用这个替换OGCFeatureLayer的创建,它将工作(我不再使用我的本地服务器!):

var layer_regions OGCFeatureLayer ({
collectionId: “robitaillej: test_create_shp”
legendEnabled: 真正的
popupEnabled: 真正的
名称: “layer_regions”
可见: 真正的
标题: “区域”
渲染器: {
类型: “简单”
符号: {
类型: “simple-fill”
},
}
});
0荣誉
JamesSingletary"id="我magedisplay_3
新的因素

嗨,朱利安,

只是想知道您是否能够查明这个错误的原因?我遇到了类似的“TypeError”,正如你上面描述的,主要的区别是我的错误在“attributes”prop上。

未捕获的类型错误:无法读取属性'attributes'为null

对此有任何见解将不胜感激!

提前感谢,
詹姆斯

标签(4)
0荣誉