Domanda

Sto creando la mia mappa in stile utilizzando Google Maps API JS. Volevo aggiungere direzioni funzionalità per mappare, ho seguito il ufficiale esercitazione (In Visualizzazione del DirectionsResult del titolo), ma il percorso finale non appare ...

Ho il debug il mio codice e ho trovato, di directionsService.route restituisce la funzione google.maps.DirectionsStatus.OK e directionsDisplay.setDirections (risultato) è davvero chiamato senza errori JS ... Così le direzioni vengono calcolati con successo, ma non ha mostrato nella mia mappa. Una ha cercato di spegnere mappa speciale styling, ma anche sullo stile mappa predefinita non viene visualizzato. Tutte le idee in cui potrebbe essere il problema?

OK, un po 'di codice ...:

<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);
            }
          });

        }
È stato utile?

Soluzione

Non so se è la fonte dei vostri problemi, ma è sicuro che la pena un colpo ... Dal vostro ingresso lo script

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

I assumere la funzione directions_init viene chiamato dopo lo script api è stato scaricato, che probabilmente è prima di evento onload della pagina, così la vostra mappa oggetto non è stato avviato ed è nullo. Quindi, in pratica si sta chiamando

directionsDisplay.setMap(null);

Prova chiamando directions_init da gmap_init o su qualsiasi evento che si attiva dopo onload.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top