Javascript 有没有办法将API数据转换为Mapbox图层?
我下面有一个回调函数,可以从EventBriteAPI生成数据。目前,此功能可以通过“新建标记”方法在我的Mapbox地图上生成标记。但是,我希望通过“Mapbox addLayer”方法将这些数据生成地图上的图层,而不是标记Javascript 有没有办法将API数据转换为Mapbox图层?,javascript,ajax,mapbox,layer,mapbox-gl-js,Javascript,Ajax,Mapbox,Layer,Mapbox Gl Js,我下面有一个回调函数,可以从EventBriteAPI生成数据。目前,此功能可以通过“新建标记”方法在我的Mapbox地图上生成标记。但是,我希望通过“Mapbox addLayer”方法将这些数据生成地图上的图层,而不是标记 callbackEventbrite(function(result){ const keys = Object.values(result); for(const key of keys){ geojson = {
callbackEventbrite(function(result){
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}
);
}
});
我基本上想这样做,它在地图上生成符号,基于几何体的坐标,但是使用API数据
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"
}
},
非常感谢您的帮助!谢谢这应该相当简单,您只需要根据Eventbrite响应构建一个功能阵列
var特性arr;
callbackEventbrite(函数(结果){
常量键=对象值(结果);
for(键的常数键){
变量特征={
“类型”:“功能”,
“id”:key.vention.id,
“几何学”:{
“类型”:“点”,
“坐标”:[键.地点.经度,键.地点.纬度]
},
“财产”:{
“标题”:key.vention.name,
“描述”:key.vention.description,
“图标”:“栏”
}
};
特征推送(特征);
}
}
map.addSource(“mySource”{
“类型”:“geojson”,
“数据”:{
“类型”:“FeatureCollection”,
“特征”:特征arr
}
});
map.addLayer({
“id”:“位置”,
“类型”:“符号”,
“来源”:“我的来源”,
“布局”:{
“文本字体”:[“Open Sans Semibold”,“Arial Unicode MS Bold”],
“文本偏移量”:[0,0.6],
“文本锚定”:“顶部”,
}
})
感谢您的回复!这似乎是正确的方法,但我收到一个错误,指出“输入数据不是有效的geoJSON对象”。我不确定为什么,因为该错误没有给出中断的代码行。我觉得这里的主要问题之一是,从API接收的所有数据都必须在回调中使用。对于出于某种原因,当在回调中添加层或源时,Mapbox似乎不想工作,这不应该是一个问题。您从他们的api接收的数据与硬编码的数据没有什么不同。可能从api接收的数据类型没有被接受为有效的坐标或名称。您可以更新您的问题吗使用来自eventbrite的示例响应或您对eventbrite的ajax调用,以便我可以使用响应测试它?@seanrs97您可以将生成的geojson粘贴到其中,以便更好地反馈哪些是正确的/错误的。