Console.log('变量') - 如何显示

时间:2013-09-20 14:25:45

标签: javascript jquery function google-maps google-maps-api-3

这里我有一个函数route();

function route() {
      // Clear any previous route boxes from the map
      clearBoxes();

      // Convert the distance to box around the route from miles to km
      distance = parseFloat(document.getElementById("distance").value) * 1.609344;

      var request = {
        origin: document.getElementById("from").value,
        destination: document.getElementById("to").value,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
      }
      if (status == google.maps.DirectionsStatus.OK) {
  directionsRenderer.setDirections(result);
  var route = response.routes[0];
  startLocation = new Object();
  endLocation = new Object();

  var path = response.routes[0].overview_path;
  var legs = response.routes[0].legs;
  for (i=0;i<legs.length;i++) {
    if (i == 0) { 
      startLocation.latlng = legs[i].start_location;
      startLocation.address = legs[i].start_address;
    }
    endLocation.latlng = legs[i].end_location;
    endLocation.address = legs[i].end_address;
  }
      }
      // Make the directions request
      directionService.route(request, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
          directionsRenderer.setDirections(result);

          // Box around the overview path of the first route
          var path = result.routes[0].overview_path;
          var boxes = routeBoxer.box(path, distance);
          drawBoxes(boxes);
        } else {
          alert("Directions query failed: " + status);
        }
      });
    }

此函数在两个地方之间创建路线方向,并在地图上放置2个标记(起点标记和结束点标记)

现在我想在其他函数中使用这个标记位置,并在console.log中显示,看看我的代码发生了什么。

我试试:

console.log(startLocation.latlng);

然后我进入控制台:

ReferenceError: startLocation is not defined
get stack: function () { [native code] }
message: "startLocation is not defined"
set stack: function () { [native code] }
__proto__: Error

如何在全局变量中显示此开始和结束纬度,经度数据以用于其他功能?

更新:我真正需要的是使用功能路线获得已建立标记的位置()如何做:

function route() {
      // Clear any previous route boxes from the map
      clearBoxes();

      // Convert the distance to box around the route from miles to km
      distance = parseFloat(document.getElementById("distance").value) * 1.609344;

      var request = {
        origin: document.getElementById("from").value,
        destination: document.getElementById("to").value,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
      }

      // Make the directions request
      directionService.route(request, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
          directionsRenderer.setDirections(result);

          // Box around the overview path of the first route
          var path = result.routes[0].overview_path;
          var boxes = routeBoxer.box(path, distance);
          drawBoxes(boxes);
        } else {
          alert("Directions query failed: " + status);
        }
      });
    }

2 个答案:

答案 0 :(得分:1)

在任何编程语言中使用全局变量通常都不是一个好主意,包括javascript。理想情况下,您应该声明要在函数内部和外部作用域上的其他函数中访问的变量。

例如,假设您的代码是这样的。

var valueOne;
function setValue(){
    valueOne = 3;
}
function readValue(){
    console.log(valueOne);
}
setValue();
readValue();

将记录&#34; 3&#34;只有在readValue之前调用setValue时。在这种情况下,您必须100%确定变量是在包含这两个函数的作用域中声明的,并且它们是按该顺序调用的。

另一种方法是,调整自己的代码,使用window.startLocation,window.endLocation等,这会将你的变量附加到窗口对象,使它们全局可用。默认情况下,在javascript中使用不带前置varvar startLocation)的变量应该使其成为全局变量,但如果不起作用,则可以尝试直接将其附加到窗口对象。在任何情况下,你必须确保的是,设置要记录在另一个函数中的值的函数在另一个函数之前被调用,如果它没有显然不会被设置的值

答案 1 :(得分:-1)

startLocation是此函数的局部变量。您需要从此处返回它以从其他功能访问。或者,使用类范围。阅读任何关于javascript的标准书籍。你也可以把它变成全球性的,但我不推荐它。