API карт Google: результат маршрута не отображается - PullRequest
1 голос
/ 16 февраля 2012

Я создаю свою собственную стилизованную карту с помощью Google Maps JS API.Я хотел добавить функциональность маршрутов на карту, я следовал официальному учебнику (в разделе Отображение заголовка DirectionsResult ), но окончательный маршрут не отображается ...

Я отладил свой код и обнаружил, что функция directionsService.route возвращает google.maps.DirectionsStatus.OK и directionsDisplay.setDirections (результат) действительно вызывается снет ошибки JS ... Таким образом, направления успешно рассчитаны, но не показаны на моей карте.Попытка отключить специальный стиль карты, но даже при использовании стиля карты по умолчанию он не отображается.Есть идеи, где может быть проблема?

ОК, какой-то код ...:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyAB2gbXmG... ...mNs66iPr8&amp;sensor=false&amp;callback=directions_init"></script>

    <script type="text/javascript">
        var map;
        var zoom = 11;
        var directionsDisplay;
        var directionsService;

        function gmap_init(){
            var styleArray = [ /*here is style but even if its commented its not working*/];

            var alterMapStyle = new google.maps.StyledMapType(styleArray, {name: "ALTER style"});


            var latlng = new google.maps.LatLng(/*lat, lng*/);
            var myOptions = {
              zoom: zoom,
              center: latlng,
              mapTypeId: google.maps.MapTypeId.ROADMAP,
              mapTypeControl: false,
              panControl: false,
              zoomControl: false,
              scaleControl: false,
              streetViewControl: false
            };
            map = new google.maps.Map(document.getElementById("gmap"), myOptions);

            map.mapTypes.set('ALTER_style', alterMapStyle);
            map.setMapTypeId('ALTER_style');


        }

        function directions_init(){

            directionsService = new google.maps.DirectionsService();
            directionsDisplay = new google.maps.DirectionsRenderer();
            directionsDisplay.setMap(map);

            display_route();

        }

        function display_route(){
            var request = {
                origin: 'Place A',
                destination:'Place B',
                travelMode: google.maps.TravelMode.DRIVING
              };

          directionsService.route(request, function(result, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                //program got here without error
                directionsDisplay.setDirections(result);
            }
          });

        }

1 Ответ

1 голос
/ 16 февраля 2012

Не уверен, что это источник твоих проблем, но это точно стоит попробовать ... Из вашего скрипта введите

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyAB2gbXmG... ...mNs66iPr8&amp;sensor=false&amp;callback=directions_init"></script> 

Я предполагаю, что функция directions_init вызывается после загрузки скрипта api, что, вероятно, происходит до события загрузки страницы, поэтому ваш объект карты не был инициирован и имеет значение null. Так что практически вы звоните

directionsDisplay.setMap(null);

Попробуйте вызвать directions_init из gmap_init или по любому событию, которое срабатывает после загрузки.

...