Javascript 有没有一种方法可以使用Mapbox将层添加到通过AJAX回调生成的数据中?
使用下面的代码(从API生成事件数据),我想创建一个mapbox层,然后可以使用它在地图上创建标记和符号。但是,我不想使用Mapbox标记,因为这会导致我的代码出现问题,并且不是我想要使用的东西 我已经成功地为硬编码数据实现了这一点,我希望对从API接收的数据也这样做。Iv'e尝试将生成的数据转换为GeoJSON,并尝试在数据上循环(这会导致创建多个id并中断代码)Javascript 有没有一种方法可以使用Mapbox将层添加到通过AJAX回调生成的数据中?,javascript,ajax,mapbox,layer,mapbox-gl-js,Javascript,Ajax,Mapbox,Layer,Mapbox Gl Js,使用下面的代码(从API生成事件数据),我想创建一个mapbox层,然后可以使用它在地图上创建标记和符号。但是,我不想使用Mapbox标记,因为这会导致我的代码出现问题,并且不是我想要使用的东西 我已经成功地为硬编码数据实现了这一点,我希望对从API接收的数据也这样做。Iv'e尝试将生成的数据转换为GeoJSON,并尝试在数据上循环(这会导致创建多个id并中断代码) 在工作状态下,从API生成的每个结果都应该在地图上有自己的符号,通过addLayer方法生成。非常感谢您的帮助 下面是一个通过d3
在工作状态下,从API生成的每个结果都应该在地图上有自己的符号,通过addLayer方法生成。非常感谢您的帮助 下面是一个通过d3进行AJAX调用的示例,用于向地图添加源和图层: 免责声明:我在Mapbox工作
callbackEventbrite(function(result){
console.log("env", result)
//var geo = GeoJSON.parse(result.events,{Point: [result.location.latitude, result.location.longitude]});
//console.log(geo);
const keys = Object.values(result);
for(const key of keys){
geojson = {
type: 'featureCollection',
features: [{
type: 'feature',
geometry: {
type: 'Point',
coordinates: [key.venue.longitude, key.venue.latitude]
}
}]
}
eventInfo.push(
{"longitude": key.venue.longitude , "latitude": key.venue.latitude , "name": key.name.text, "venue": key.venue.name, "date": key.start.local, "category": key.category_id}
);
}
});
function callbackEventbrite(callback){
$.ajax(briteSettings).done(function(data){
callback(data.events);
});
}
// What Iv'e got to work (hard coded data)
map.on("load", function(){
map.addLayer({
"id": "locations",
"type": "symbol",
"source": {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"Title": "The Congress Inn",
"Description": "Pub located in Longton",
"Type": "Pub",
"Address": "14 Sutherland Rd, Stoke-on-Trent ST3 1HJ",
"Longitude": 2.1316,
"Latitude": 52.9878,
"icon": "bar"
},
"geometry": {
"coordinates": [
-2.131836,
52.987238
],
"type": "Point"
}
}