google-maps - 新手javascript范围问题

标签 google-maps javascript

我对范围是什么有所了解,我是 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/

相关文章:

java - GetMap() 在使用 Google Maps API v2 的 Android 上返回 null

javascript - 标题标签 html 内的 sup 标签

javascript - 以 Angular 登录后将数据发送到不同的 Controller

javascript - 删除谷歌图表错误消息并在数据库中没有数据时显示空图表

android - TileOverlay#getTile 从缩放级别 3 开始

java - 地理围栏服务触发但未触发

javascript - 使用 Google Maps API 自动完成国家列表

javascript - 调整谷歌地图 v3 中的圆圈大小(MVC 对象)

javascript - 如何在 14 秒内向下滚动 jQuery 页面

javascript - 如何使用 jquery animate 来回移动多个元素