2016-02-04 3 views
0

Я пытаюсь создать транзитную карту (с указанием автобусов и метро) с помощью Google Maps, но когда я создаю маркеры «start» и «end» с входов (с адресами автозаполнения) нет никакого способа перетащить любой маркер, несмотря на то, что установлен drag как true.Перетаскиваемые маркеры на транзитной карте Google

Изменение опции travelMode на google.maps.TravelMode.DRIVING перетаскивание включено. И возвращая это свойство до google.maps.TravelMode.TRANSIT, daggin 'возвращается к отключенному.

Есть ли способ решить эту проблему?

Код:

var directionsService; 
    var directionsDisplay; 

    function initMap() { 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 14, 
     center: {lat: -32.89, lng: -68.845} // Mendoza. 
    }); 

    directionsService = new google.maps.DirectionsService; 
    directionsDisplay = new google.maps.DirectionsRenderer({ 
     draggable: true, 
     map: map, 
     panel: document.getElementById('right-panel') 
    }); 

    directionsDisplay.addListener('directions_changed', function() { 
     var addresses = directionsDisplay.getDirections().routes[0].legs[0]; 
     document.getElementById('from').value = addresses.start_address; 
     document.getElementById('to').value = addresses.end_address; 
    }); 
    google.maps.event.addDomListener(document.getElementById('go'), 'click', displayRoute); 

    var input_from = document.getElementById('from'); 
    var autocomplete = new google.maps.places.Autocomplete(input_from); 
    autocomplete.bindTo('bounds', map); 

    var input_to = document.getElementById('to'); 
    var autocomplete = new google.maps.places.Autocomplete(input_to); 
    autocomplete.bindTo('bounds', map); 

    displayRoute(); 
    } 

    function displayRoute() { 
    directionsService.route({ 
     origin: document.getElementById('from').value, 
     destination: document.getElementById('to').value, 
     //travelMode: google.maps.TravelMode.DRIVING, 
     travelMode: google.maps.TravelMode.TRANSIT 
    }, function(response, status) { 
     if (status === google.maps.DirectionsStatus.OK) { 
     console.log(response); 
     directionsDisplay.setDirections(response); 
     } else { 
     alert('Could not display directions due to: ' + status); 
     } 
    }); 
    }  

    google.maps.event.addDomListener(window, 'load', initMap); 
+1

Как вы добавляете маркеры? Просьба представить [Минимальный, полный, проверенный и читаемый пример] (http://stackoverflow.com/help/mcve), который демонстрирует проблему. – geocodezip

+0

@geocodezip Я добавил использованный код в ответ. Благодарю. –

+0

Значит, маркеры являются маркерами DirectionsRenderer по умолчанию? Я мог понять, почему Google не может перетащить теги, возможно, вам придется добавить свои перетаскиваемые маркеры с помощью прослушивателей перетаскивания, чтобы перепрограммировать направления при их перемещении. – geocodezip

ответ

0

К сожалению, режим "перетаскивать" не разрешенный в режиме транзитного проезда. Сейчас я пытаюсь найти способ, и я нашел ваш вопрос кстати.

EDIT

В документации Google говорит:

Пользователи могут изменять велосипедного, ходьба или направления движения отображаются с использованием DirectionsRenderer динамически, если они перетаскиваемым, позволяя пользователю выбирать и изменить маршруты, щелкнув и перетащив результирующие пути на карте . Вы указываете, позволяет ли дисплей рендера перетаскивать маршруты, установив его свойство перетаскивания в значение true. Направление движения не может быть перетаскиваемым.

Проверьте это здесь: https://developers.google.com/maps/documentation/javascript/directions#TransitOptions

Мы должны найти другой способ ... если я найду его, я сделаю вам знать, если вы найдете его первым, я буду признателен, если вы сказали меня.

Смежные вопросы