我的谷歌地图返回"最大调用堆栈大小超过了"错误

本文关键字:quot 错误 过了 堆栈 谷歌地图 返回 我的 调用 | 更新日期: 2023-09-27 18:07:28

我从ajax得到我的后期和lan值。这是我的示例代码。实际上,我正在从c#代码中获得我的lat和lan值。如果我直接传递一个值给javascript,它工作得很好。如果我通过ajax使用它不工作。有人知道怎么解决这个问题吗?

var locations='';
$.ajax({
        type: "POST",
        url: 'http://www.ajax.com',
        async: false,
        success: function (msg) {
            locations = msg[0];
/*below result is what i am getting from ajax */
          //locations=["<a href='#' target='_blank'><b class='blue'>XXX</b></a>", 53.2279753, -1.6115431, 1], ["<a href='#' target='_blank'><b class='blue'>YYY</b></a>", 51.9935422, -1.7021487, 2] 

        },
        error: function () {
        }
    });
locations = [locations];
        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 8,
            center: new google.maps.LatLng(-39.92, 151.25),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });
        var infowindow = new google.maps.InfoWindow();
        var marker, i;
        var markers = new Array();
        for (i = 0; i < locations.length; i++) {
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                map: map
            });
            markers.push(marker);
            google.maps.event.addListener(marker, 'click', (function (marker, i) {
                return function () {
                    infowindow.setContent(locations[i][0]);
                    infowindow.open(map, marker);
                }
            })(marker, i));
        }
        //  Create a new viewpoint bound
        var bounds = new google.maps.LatLngBounds();
        //  Go through each...
        $.each(markers, function (index, marker) {
            bounds.extend(marker.position);
        });
        //  Fit these bounds to the map
        map.fitBounds(bounds);
        //AutoCenter();

我的谷歌地图返回"最大调用堆栈大小超过了"错误

如果长/纬度未定义或不是数字,则会发生这种情况。在创建标记之前,您可能需要检查一下。

在这里看到被接受的答案:https://stackoverflow.com/a/17231733/1141089

更新:因为你的问题似乎是你正在传递字符串给标记函数,你可以用两种方式解决它。

你可以在javascript中这样解决:

var value = parseFloat("55.2421410");

或者在c#代码中(返回JSON)像这样:

var value = float.Parse("55.2421410", CultureInfo.InvariantCulture.NumberFormat);

所以你的Javascript代码看起来像这样(如果你选择用JS解决它)

var latitude = parseFloat(locations[i][1])
var longitude = parseFloat(locations[i][2]);
//Do some error handling here, look for NaN, undefined etc.
var marker = new google.maps.Marker({
    position: new google.maps.LatLng(latitude, longitude),
    map: map
});