我有列表后端,我有2个地方。
这是后端的代码。
public JsonResult GetData()
{
List<Park> stations = new List<Park>();
stations.Add(new Park()
{
Id = 2,
GeoLat = 37.608644,
GeoLong = 55.75226,
Weight = 12
});
stations.Add(new Park()
{
Id = 3,
GeoLat = 30.5807913,
GeoLong = 50.493239,
Weight = 12
});
return Json(stations.ToArray(), JsonRequestBehavior.AllowGet);
}
我这样在客户端
function getPoints() {
$.getJSON('@Url.Action("GetData", "Home")',
function (data) {
var marker;
// Проходим по всем данным и устанавливаем для них маркеры
$.each(data,
function(i, item) {
marker = [
{
'location': new google.maps.LatLng(item.GeoLong, item.GeoLat),
'map': map,
'weight': item.Weight
}
];
});
var pointArray = new google.maps.MVCArray(marker);
console.log(pointArray);
heatmap = new google.maps.visualization.HeatmapLayer({
data: pointArray
});
heatmap.setMap(map);
});
};
并用这种方法更新地图
function initMap() {
map = new google.maps.Map(document.getElementById('map'),
{
zoom: 13,
center: { lat: 55.752622, lng: 37.617567 },
mapTypeId: 'satellite'
});
getPoints();
}
但我只看到一个地方。我不明白为什么,因为我在这一行设置了断点
return Json(stations.ToArray(), JsonRequestBehavior.AllowGet);
我返回2位。
我的问题在哪里?
感谢帮助
最佳答案
var marker;
应该更改为:
var marker = [];
和
marker = [
{
'location': new google.maps.LatLng(item.GeoLong, item.GeoLat),
'map': map,
'weight': item.Weight
}
];
应该更改为:
marker.push({
'location': new google.maps.LatLng(item.GeoLong, item.GeoLat),
'map': map,
'weight': item.Weight
});
现有代码的问题在于,您要为
marker
分配单个元素数组(因此,您实际上将仅显示最后一个标记)。您当前未添加到该数组。我的更改使用push
来解决。