我试图用谷歌Map和标记写一个简单的例子,但我面临着错误:
Uncaught RangeError: Maximum call stack size exceeded
约旦:
$(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;
}
});
1条答案
按热度按时间y53ybaqx1#
调用
fitBounds
时出现错误Uncaught RangeError: Maximum call stack size exceeded
通常意味着您使用无效的google.maps.LatLng
对象调用了bounds.extend
。这是不正确的(x.lat和x. lng未定义):
它与lat产生latlng:不适用,液化天然气:不适用
这是不合理的。
应为:
updated fiddle
一个一个二个一个一个一个三个一个一个一个一个一个四个一个