我的谷歌地图返回“超出最大调用堆栈大小”错误

时间:2016-09-19 06:56:39

标签: c# jquery ajax google-maps

我从ajax获取我的lat和lan值。这是我的示例代码。实际上我从c#code获取我的lat和lan值。如果我将值直接传递给javascrip,它可以正常工作。如果我通过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();

1 个答案:

答案 0 :(得分:0)

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

请在此处查看已接受的答案: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
});