调用JSON .each的堆栈溢出



我有一个JSON对象列表,我循环,然后(使用这里找到的jQuery Gmap插件)创建该对象的标记,并将其添加到地图。

问题是,在每个浏览器中,我得到callstack溢出消息:

未捕获RangeError:最大调用堆栈大小超过

Chrome中的

太多递归

在Firefox。

我不知道为什么或如何修复它。

这是我的代码:

$('#map_canvas').gmap().bind('init', function (evt, map) {
        var webMethod = '<%= NavigationHelper.GetFullUrl("Components/Services/storelocatorservice.asmx/GetStoresByAddress") %>';
        var webParam = '{ "address": "Vaartkom 31/9 3000 Leuven", "language": "<%= Sitecore.Context.Language.CultureInfo.TwoLetterISOLanguageName %>", "radius": "15" }';
        $.ajax({
            type: "POST",
            url: webMethod,
            data: webParam,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                //$('#map_canvas').gmap('set', 'MarkerClusterer', new MarkerClusterer(map));
                addMarkers($.parseJSON(msg.d));
            }
        });
});
function addMarkers(json) {
        $.each(json, function (i, m) {
            $('#map_canvas').gmap('addMarker', {
                'title': m.Name,
                'position': new google.maps.LatLng(m.Lat, m.Long),
                'name': m.Name,
                'zipcode': m.ZipCode,
                'id': m.LocationId,
                'bounds': true
            }).click(function () {
                $('#map_canvas').gmap('openInfoWindow', {
                    'content': '<h3>' + m.Name + '</h3><p>' + m.ZipCode + '</p><a onclick="getDirections('' + m.Id + '')">Route</a>'
                }, this);
            });
        });
}

任何帮助都非常感谢!

我已经找到了一个修复,不是它修复了错误本身,它只是防止它发生:我必须在添加标记时设置bounds: false,这样它就不会溢出callstack。

最新更新