API карт Google: результат маршрута не отображается

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

Я отладил свой код и обнаружил, что функция directionsService.route возвращает google.maps.DirectionsStatus.OK, а directionsDisplay.setDirections(result) равно действительно вызывается без ошибки 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);
            }
          });

        }

person Ján Janočko    schedule 16.02.2012    source источник


Ответы (1)


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

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

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

directionsDisplay.setMap(null);

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

person slawekwin    schedule 16.02.2012