gst*_*low 0 javascript stack-overflow google-maps-api-3
我试图用谷歌地图和标记写简单的例子,但我面临着错误:
Uncaught RangeError: Maximum call stack size exceeded
Run Code Online (Sandbox Code Playgroud)
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;
}
});
Run Code Online (Sandbox Code Playgroud)
通常Uncaught RangeError: Maximum call stack size exceeded调用时的错误fitBounds意味着您bounds.extend使用无效google.maps.LatLng对象进行了调用.
这是不正确的(x.lat和x.lng未定义):
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);
}
Run Code Online (Sandbox Code Playgroud)
它产生lat的lat:NaN,lng:NaN
哪个无效.
应该:
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);
}
Run Code Online (Sandbox Code Playgroud)