未捕获的RangeError:当我使用谷歌地图时,超出最大调用堆栈大小 [英] Uncaught RangeError: Maximum call stack size exceeded when I use google maps

查看:175
本文介绍了未捕获的RangeError:当我使用谷歌地图时,超出最大调用堆栈大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 未捕获的RangeError:最大呼叫数堆栈大小超过

js:

<$ p $ ($)$ $ $ $ var map;
var $;
var myOptions = {
zoom:1,
center:new google.maps.LatLng(0,0),
mapTypeId:'terrain'
};
map = new google.maps.Map($('#map_canvas ')[0],myOptions);

var markers = [];
coords = [{
lat:55,
lng:37
}];
for(var x = 0; x var latlng = new google.maps.LatLng(x.lat,x.lng);
var marker = new google.maps.Marker({
position:latlng,
map:map
});
markers.push(marker);


}

fitBounds();

函数f itBounds(){
var bounds = calculateBounds();
if(bounds!= undefined){
map.fitBounds(bounds);
}
}

function calculateBounds(){
var allMarkers = markers;
if(allMarkers.length> 0){
var bounds = new google.maps.LatLngBounds();
for(i = 0; i< allMarkers.length; i ++){
bounds.extend(allMarkers [i] .getPosition());
}
}
返回界限;
}

});

未捕获的RangeError:超过最大调用堆栈大小 / code>在调用 fitBounds 时通常意味着您使用无效的<$ c $调用 bounds.extend c> google.maps.LatLng object。



这是不正确的(x.lat和x.lng未定义):

  for(var x = 0; x  var latlng = new google.maps.LatLng (x.lat,x.lng); 
var marker = new google.maps.Marker({
position:latlng,
map:map
});
markers.push(marker);

$ / code>

产生latlng:lat,NaN,lng:NaN



哪一个是无效的。

应该是:

<$ p $对于(var x = 0; x var latlng = new google.maps.LatLng(coords [x] .lat,coords [x] .lng);
var marker = new google.maps.Marker({
position:latlng,
map:map
});
markers.push(marker);
}

更新小提琴


I am trying to write simple example with google maps and markers but i faces with error:

Uncaught RangeError: Maximum call stack size exceeded

js:

$(document).ready(function() {
    var map;
    var elevator;
    var myOptions = {
        zoom: 1,
        center: new google.maps.LatLng(0, 0),
        mapTypeId: 'terrain'
    };
    map = new google.maps.Map($('#map_canvas')[0], myOptions);

    var markers = [];
    coords = [{
        lat: 55,
        lng: 37
    }];
    for (var x = 0; x < coords.length; x++) {
        var latlng = new google.maps.LatLng(x.lat, x.lng);
        var marker = new google.maps.Marker({
            position: latlng,
            map: map
        });
        markers.push(marker);


    }

    fitBounds();

    function fitBounds() {
        var bounds = calculateBounds();
        if (bounds != undefined) {
            map.fitBounds(bounds);
        }
    }

    function calculateBounds() {
        var allMarkers = markers;
        if (allMarkers.length > 0) {
            var bounds = new google.maps.LatLngBounds();
            for (i = 0; i < allMarkers.length; i++) {
                bounds.extend(allMarkers[i].getPosition());
            }
        }
        return bounds;
    }

});

fiddle

解决方案

The error Uncaught RangeError: Maximum call stack size exceeded when calling fitBounds usually means you have called bounds.extend with an invalid google.maps.LatLng object.

This is incorrect (x.lat and x.lng are undefined):

for (var x = 0; x < coords.length; x++) {
    var latlng = new google.maps.LatLng(x.lat, x.lng);
    var marker = new google.maps.Marker({
        position: latlng,
        map: map
    });
    markers.push(marker);
}

It yields latlng with lat: NaN, lng: NaN

Which isn't valid.

should be:

for (var x = 0; x < coords.length; x++) {
    var latlng = new google.maps.LatLng(coords[x].lat, coords[x].lng);
    var marker = new google.maps.Marker({
        position: latlng,
        map: map
    });
    markers.push(marker);
}

updated fiddle

这篇关于未捕获的RangeError:当我使用谷歌地图时,超出最大调用堆栈大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆