javascript - JSON .each 上的调用堆栈溢出

标签 javascript jquery google-maps stack-overflow callstack

我有一个 JSON 对象列表,我循环遍历它,然后(使用找到的 jQuery Gmap 插件 here )为该对象创建标记并将其添加到 map 中。

问题是在每个浏览器中我都会收到调用堆栈溢出消息:

Uncaught RangeError: Maximum call stack size exceede

在 Chrome 中,以及

Too much recursion

在火狐浏览器中。

我不知道为什么或如何解决它。

这是我的代码:

$('#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,这样它就不会溢出调用堆栈。

关于javascript - JSON .each 上的调用堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569813/

相关文章:

javascript - 使用 Web Api Controller 验证表单

javascript - 如何在 jQuery 中单击按钮后禁用下拉菜单

javascript - 获取除 first 和 last 之外的所有数组元素

google-maps - Google map 静态图像的最大网址长度

ios - map 方向线未显示在 map 上

javascript - 查找 id 的正则表达式

javascript - jQuery:在已选元素中选择一个元素

javascript - 在 Mac 上的 VSCode 中调试 Javascript

javascript - 将 OpenLayers 与 RequireJS 和 AngularJS 结合使用

asp.net - JS 中 Listbox.Length 始终为 0