我有列表后端,我有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来解决。

07-28 07:47