#javascript #json #heatmap #esri #arcgis-js-api
#javascript #json #тепловая карта #esri #arcgis-js-api
Вопрос:
Я пытаюсь выполнить цикл по возвращенным объектам JSON и построить тепловую карту на основе координат x и y. Вот как я настраиваю свою тепловую карту:
function getHeatMap() {
heatLayer = new HeatmapLayer({
config: {
"useLocalMaximum": true,
"radius": 40,
"gradient": {
0.45: "rgb(000,000,255)",
0.55: "rgb(000,255,255)",
0.65: "rgb(000,255,000)",
0.95: "rgb(255,255,000)",
1.00: "rgb(255,000,000)"
}
},
"map": map,
"domNodeId": "heatLayer",
"opacity": 0.85
});
$.ajax({
url: "index.aspx/getBusCommuter",
type: "POST",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var parsed = JSON.parse(data.d);
var data = [];
$.each(parsed, function (i, jsondata) {
var coordXicon = jsondata.BusStopX;
var coordYicon = jsondata.BusStopY;
data = [
{
attributes: {},
geometry: {
spatialReference: { wkid: 102100 },
type: "point",
x: coordXicon,
y: coordYicon
}
}
];
});
heatLayer.setData(data);
map.addLayer(heatLayer);
},
error: function (request, state, errors) {
}
});
}
По сути, объект JSON просто переходит к последнему набору объектов JSON и выводит только последний набор вместо всех. Интересно, какая часть моей логики была неправильной.
Заранее спасибо.
Ответ №1:
Проблема здесь:
data = [
{
attributes: {},
geometry: {
spatialReference: {
wkid: 102100
},
type: "point",
x: coordXicon,
y: coordYicon
}
}
];
Вы настраиваете весь массив данных для каждого элемента (перезаписывая все старые данные), когда вы, вероятно, просто хотите вставить новый элемент в конец. Попробуйте это вместо:
data.push({ ... });