как получить направление, выбранное между двумя маркерами на картах google в javascript [duplicate]

Ответ зависит от того, говоришь ли вы о столбце в таблице базы данных или о переменной в программе PL / SQL.

Столбец базы данных

Объем хранилища

PL / SQL переменная

Если переменная объявлена ​​с размером от 1 до 3999 (11g +) / 1999 (10g или ранее) , память будет выделена для максимальной длины (то есть для VARCHAR2 (100) потребуется не менее 100 байт памяти).

Если переменная объявлена ​​с размером 4000 (11g +) / 2000 (10g или более раннее ) или больше, память будет распределена в соответствии с размером хранимых данных. (интересным вопросом является вопрос, будет ли изменено значение переменной, как изменяется размер памяти - перераспределяет другой буфер с новым размером?)

Ссылка для 10g: Типы данных PL / SQL

Небольшие переменные VARCHAR2 оптимизированы для производительности, а более крупные оптимизированы для эффективного использования памяти. Точка отсечки - 2000 байт. Для VARCHAR2, который составляет 2000 байт или более, PL / SQL динамически выделяет достаточно памяти для хранения фактического значения. Для переменной VARCHAR2, длина которой меньше 2000 байт, PL / SQL предопределяет полную объявленную длину переменной. Например, если вы присвоите то же 500-байтовое значение переменной VARCHAR2 (2000 BYTE) и переменной VARCHAR2 (1999 BYTE), первая берет 500 байтов, а последняя занимает 1999 байт.

8
задан Monica T 7 December 2014 в 10:25
поделиться

2 ответа

Два комментария:

  1. ваш вопрос задает вопросы о направлениях между маркерами, но в коде, который вы отправили, нет маркеров. Существуют две позиции, определенные объектами LatLng. Служба маршрутов автоматически добавит маркеры в начале и в конце маршрута. Если вы хотите получить маршруты между двумя маркерами, сначала вам нужно добавить их на свою карту.
  2. В выложенном коде нет вызова calcRoute (я добавил кнопку «route», выполняются).

Проблемы:

  1. служба направлений возвращает ZERO_RESULTS для ваших исходных точек, поэтому маршрут не нарисован. Добавьте ошибку в случае else для теста if (status == "OK"), чтобы увидеть это.
  2. , если я изменю точки на место, которое можно фактически маршрутизировать (Palo Alto, CA), маршрут маршрута маршрутов isn ' t, потому что вы никогда не устанавливали свойство «map» для службы маршрутов

рабочий скрипт

function mapLocation() {
    var directionsDisplay;
    var directionsService = new google.maps.DirectionsService();
    var map;

    function initialize() {
        directionsDisplay = new google.maps.DirectionsRenderer();
        var chicago = new google.maps.LatLng(37.334818, -121.884886);
        var mapOptions = {
            zoom: 7,
            center: chicago
        };
        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
        directionsDisplay.setMap(map);
        google.maps.event.addDomListener(document.getElementById('routebtn'), 'click', calcRoute);
    }

    function calcRoute() {
        var start = new google.maps.LatLng(37.334818, -121.884886);
        //var end = new google.maps.LatLng(38.334818, -181.884886);
        var end = new google.maps.LatLng(37.441883, -122.143019);
        var bounds = new google.maps.LatLngBounds();
        bounds.extend(start);
        bounds.extend(end);
        map.fitBounds(bounds);
        var request = {
            origin: start,
            destination: end,
            travelMode: google.maps.TravelMode.DRIVING
        };
        directionsService.route(request, function (response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(response);
                directionsDisplay.setMap(map);
            } else {
                alert("Directions Request from " + start.toUrlValue(6) + " to " + end.toUrlValue(6) + " failed: " + status);
            }
        });
    }

    google.maps.event.addDomListener(window, 'load', initialize);
}
mapLocation();

фрагмент рабочего кода:

function mapLocation() {
  var directionsDisplay;
  var directionsService = new google.maps.DirectionsService();
  var map;

  function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    var chicago = new google.maps.LatLng(37.334818, -121.884886);
    var mapOptions = {
      zoom: 7,
      center: chicago
    };
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
    directionsDisplay.setMap(map);
    google.maps.event.addDomListener(document.getElementById('routebtn'), 'click', calcRoute);
  }

  function calcRoute() {
    var start = new google.maps.LatLng(37.334818, -121.884886);
    //var end = new google.maps.LatLng(38.334818, -181.884886);
    var end = new google.maps.LatLng(37.441883, -122.143019);
    var request = {
      origin: start,
      destination: end,
      travelMode: google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
        directionsDisplay.setMap(map);
      } else {
        alert("Directions Request from " + start.toUrlValue(6) + " to " + end.toUrlValue(6) + " failed: " + status);
      }
    });
  }

  google.maps.event.addDomListener(window, 'load', initialize);
}
mapLocation();
html,
body,
#map-canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<input type="button" id="routebtn" value="route" />
<div id="map-canvas"></div>

26
ответ дан geocodezip 15 August 2018 в 15:53
поделиться

Довольно много ошибок. Во-первых, это геолокация. Ваше второе место неверно, поскольку долгота может быть только от +180 до -180, поэтому -181 не существует на земле! Во-вторых, как упоминал в комментарии г-н Упсидаун, вы вызываете функцию внутри функции. Сначала исправьте геолокацию, а затем вызовы функций, которые должны исправить проблемы, которые у вас есть.

0
ответ дан gothical 15 August 2018 в 15:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: