В настоящее время я работаю над проектом, который включает Mapbox GL. Я получаю json-файл с сервера с тихими множеством точек местоположения. Этот файл имеет следующую структуру:Mapbox GL add json as источник данных
{"location": {"lat": 50.62914, "lon": 5.61972}}
Теперь я хочу разместить их на слое в карточке. Проблема заключается в том, что mapbox поддерживает только GeoJSON. Поэтому я пытаюсь исправить это с помощью следующего обходного пути.
function updateMap(data) {
console.log("Updating map with " + data.length + " users");
// Converting my json file into a Geojson format by returning type:point, coordinates for every json entry
data.forEach(function(d) {
return {
"type": "Point",
"coordinates": [d.location.lon, d.location.lat]
};
});
};
Я не уверен, что это возможно, поэтому, пожалуйста, исправьте меня, если я ошибаюсь. Я думаю, что я должен вернуть его за пределы forEach, иначе я получу только первый результат.
Далее следует добавить этот файл geojson в качестве источника для этого слоя. Нечто, что выглядит следующим образом:
map.on('load', function() {
map.addSource('point', {
"type": "geojson",
"data": //need to add the points that I returned above here.
});
map.addLayer({
"id": "point",
"source": "point",
"type": "circle",
"paint": {
"circle-radius": 8,
"circle-color": "#000"
}
});
});
Только проблема, я не знаю, как получить все данные от возвращения в функции updateMap.
Спасибо за вашу помощь заранее! Надеюсь, это возможно.
С наилучшими пожеланиями,
Wouter
Да, спасибо. Это правильный ответ. Но если он уже работает. Все еще начинает ненавидеть карточку все больше и больше. – Wouter125
Полностью понять. У нас, похоже, много проблем, когда значки не загружаются в 100% случаев. Drives me nuts –
Да, я не мог редактировать цвета своего круга на основе значений в моем json-файле, потому что мне пришлось преобразовать его в geojson. Я потерял связь между двумя значениями. Пришлось вручную отрезать мой json-файл на куски и добавить 4 слоя на карту. – Wouter125