Console.log ('variable') - как показать

0

Здесь у меня есть функция 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);
        }
      });
    }
Теги:
google-maps
google-maps-api-3
function

2 ответа

1
Лучший ответ

Обычно это не очень хорошая идея использовать глобальные переменные на любом языке программирования, включая javascript. В идеале вы должны объявить переменные, которые хотите получить доступ как внутри вашей функции, так и в других функциях внешней области.

Например, скажем, ваш код выглядит так.

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

Будет записывать "3", только если setValue вызывается перед readValue. В этом случае вы должны быть на 100% уверены, что переменная объявлена в области, содержащей обе функции, и что они вызываются в этом порядке.

Другим способом, адаптирующим ваш собственный код, было бы использовать window.startLocation, window.endLocation и т.д., И это приложит ваши переменные к объекту window, сделав их доступными по всему миру. По умолчанию в javascript с использованием переменной без добавления var (var startLocation) следует сделать ее глобальной, но если она не работает, вы можете попробовать напрямую подключить ее к объекту окна. В любом случае, вы должны убедиться, что функция, которая устанавливает значения, которые вы хотите использовать для использования в другой функции, вызывается перед другой, если это не значение, очевидно, не будет установлено.

  • 0
    хорошо, как тогда я могу получить его из функции, чтобы не быть глобальным?
  • 0
    Я обновляю свой вопрос
Показать ещё 1 комментарий
0

startLocation - это локальная переменная для этой функции. Вам нужно вернуть его здесь, чтобы получить доступ к другой функции. Или используйте класс. Прочтите любую стандартную книгу на javascript. Вы также можете сделать его глобальным, но я не рекомендую его.

  • 0
    Как я могу это сделать? Пожалуйста, покажи мне в коде?
  • 0
    Я обновляю свой вопрос реальной проблемой

Ещё вопросы

Сообщество Overcoder
Наверх
Меню