我对范围是什么有所了解,我是 javascript 的新手,并且在我的代码中完全停止了。这是我使用的代码。
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(37.775057,-122.419624),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
function clicked(id) {
$.ajax({
type: "GET",
url: 'response.php',
data: {id: id},
success: function (lats) {
var obj = $.parseJSON(lats);
var line = [];
for (var i = obj.length - 1; i >= 0; i--) {
line.push(new google.maps.LatLng(obj[i].latitude, obj[i].longitude));
};
var polyPath = new google.maps.Polyline({
path: line,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
polyPath.setMap(map);
console.log(polyPath);
}
});
return false;
}
不用说它的谷歌地图。 问题是由于作用域,javascript 无法访问绘制多段线所需的 map 变量。非常感谢您的帮助!
最佳答案
因为 map
是在函数 initialize
中声明的,所以 clicked
无法访问它,你需要在 initialize 之外声明它,比如
var map = null;
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(37.775057,-122.419624),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
function clicked(id) {
$.ajax({
type: "GET",
url: 'response.php',
data: {id: id},
success: function (lats) {
var obj = $.parseJSON(lats);
var line = [];
for (var i = obj.length - 1; i >= 0; i--) {
line.push(new google.maps.LatLng(obj[i].latitude, obj[i].longitude));
};
var polyPath = new google.maps.Polyline({
path: line,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
polyPath.setMap(map);
console.log(polyPath);
}
});
return false;
}
现在 clicked
可以访问它,因为它在 initialize
范围之外
关于google-maps - 新手javascript范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16355892/