Mapbox-单击时的指针未定义

Mapbox-单击时的指针未定义,mapbox,geojson,mapbox-gl-js,Mapbox,Geojson,Mapbox Gl Js,我试图在Mapbox GL JS中为我的地图图标添加弹出窗口。到目前为止,我一直没有成功 创建图层时,在图层的数据中,我指定了几个特性。但是,当我尝试向图标添加弹出窗口时,所有属性都不存在。试图访问它们只会返回未定义的结果 添加图层: 函数addRedAirports(){ map.addSource('hoggitRed'{ 键入:“geojson”, 集群:对, clusterMaxZoom:14,//最大缩放到上的群集点 clusterRadius:10,//聚类点时每个簇的半径(默认为5

我试图在Mapbox GL JS中为我的地图图标添加弹出窗口。到目前为止,我一直没有成功

创建图层时,在图层的数据中,我指定了几个特性。但是,当我尝试向图标添加弹出窗口时,所有属性都不存在。试图访问它们只会返回未定义的结果

添加图层:

函数addRedAirports(){
map.addSource('hoggitRed'{
键入:“geojson”,
集群:对,
clusterMaxZoom:14,//最大缩放到上的群集点
clusterRadius:10,//聚类点时每个簇的半径(默认为50)
数据:redAirportArray[0]
});
map.addLayer({
“id”:“红色”,
“类型”:“符号”,
“来源”:“hoggitRed”,
“布局”:{
“图标图像”:“redIcon”,
“图标大小”:0.075,
“图标锚定”:“底部”,
“图标允许重叠”:真
}
});
这是数据的内容(redAirportArray[0])。我正在通过api循环获取此数据

当我将此数据传递给mapbox时,属性是完整且正确的。但是,当我尝试访问它们以弹出窗口时,我得到了未定义的属性。控制台记录mapbox层时,没有显示任何输入的属性

(我已经稍微压缩了这段代码。.每次循环我都创建一个功能,然后将其推送到功能集合。为了简单起见,我在这段代码中结合了这两者)

让redAirportArray=[{
“类型”:“FeatureCollection”,
“特点”:[{
“类型”:“功能”,
“属性”:{//设置属性
“测试”:“测试”,
“ID”:airportsRed[x].ID,
“团队”:airportsRed[x]。联盟
},
“几何学”:{
“类型”:“点”,
“坐标”:[airportsRed[x].LatLongAlt.Long,airportsRed[x].LatLongAlt.Lat]
}
}]
单击添加弹出窗口

map.on('click','reds',函数(e){
var coordinates=e.features[0]。geometry.coordinates.slice();
让team=e.features[0].properties.ID;
而(数学abs(e.lngLat.lng-坐标[0])>180){
坐标[0]+=e.lngLat.lng>坐标[0]?360:-360;
}
新建mapboxgl.Popup()
.setLngLat(坐标)
.setHTML(团队)
.addTo(地图);
});

提前感谢,我希望您能提供帮助!

根据当前添加图层的方式,您正在错误的位置查找
属性。
e.features[0]
未定义,因为
e
是您刚刚单击的功能。您的弹出代码应该如下所示:

map.on('click', 'reds', function (e) {
    var coordinates = e.geometry.coordinates.slice(); // Changed
    let team = e.properties.ID; // Changed


    while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {
    coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;
    }

    new mapboxgl.Popup()
    .setLngLat(coordinates)
    .setHTML(team)
    .addTo(map);
});

如果你看到的是未定义的,我的猜测是因为
e.features[0]
没有定义当我记录它时我得到:
js-qu{type:“Feature”,“vectorTileFeature:Co,properties:{…},id:7,layer:{…},}id:7层:{id:“reds”,type:“symbol”,“source:“hoggitRed”,layout:{…}属性:cluster:true cluster\u id:7 point\u count:2 point\u count\u缩写:2\uuuu proto\uuu:Object source:“hoggitRed”state:{}类型:“Feature”\u几何体:{类型:“point”,坐标:Array(2)}向量特征:Co{properties:{…},区段:8192,类型:1,\u pbf:ru,{geometry:43,}几何体:(…)__proto__:Object
似乎每个功能都得到了实际图层的道具