2016-04-21 10 views
5

Il percorso solo creare se uso LatLng o String params ma ho bisogno di crearlo da PlaceId ma non funzionaAPI di Google Maps (JS) Creazione di un percorso utilizzando PlaceId in waypoint

esempio:

directionsService.route({ 
     origin: {'placeId': 'ChIJc1lGdwfP20YR3lGOMZD-GTM'}, 
     destination: {'placeId': 'ChIJdTGhqsbP20YR6DZ2QMPnJk0'}, 
     waypoints: [{stopover: true, location: new google.maps.Place('ChIJRVj1dgPP20YRBWB4A_sUx_Q')}], 
     optimizeWaypoints: true, 
     travelMode: google.maps.TravelMode.DRIVING 
    } 
+0

Hai provato la selezione di questa correlata [domanda SO] (http://stackoverflow.com/questions/33990153/pass-posto-id-posizione-a-destinazione-in-google-maps-API)? Quali sono i tuoi log degli errori? – abielita

+0

Ho provato ma senza risultati. placeId funziona solo per l'origine e la destinazione. Non ho trovato come risultato –

risposta

4

Basta passare l'oggetto google.maps.Place come posizione del waypoint. Ad esempio:

directionsService.route({ 
    origin: { placeId: "ChIJc1lGdwfP20YR3lGOMZD-GTM" }, 
    destination: { placeId: "ChIJdTGhqsbP20YR6DZ2QMPnJk0" }, 
    waypoints: [{ stopover: true, location: { placeId: "ChIJRVj1dgPP20YRBWB4A_sUx_Q" } }], 
    optimizeWaypoints: true, 
    travelMode: google.maps.TravelMode.DRIVING 
} 

posizione specifica la posizione del waypoint, come LatLng, come oggetto google.maps.Place o come String che sarà geocoding.

Google Maps - Direction Services Documentation

Here's the JsFiddle

3

ottengo un errore di javascript con il codice scritto: Uncaught TypeError: google.maps.Place is not a constructor su questa linea:

waypoints: [{stopover: true, location: new google.maps.Place('ChIJRVj1dgPP20YRBWB4A_sUx_Q')}], 

È necessario specificare che location allo stesso modo si fa con il origin e destination placeIds:

waypoints: [{ 
    stopover: true, 
    location: {'placeId':"ChIJRVj1dgPP20YRBWB4A_sUx_Q"} 
}], 

Descrizione nella documentation:

specifica oggetto Google.maps.Place

placeId | Tipo: stringa L'ID del luogo (ad esempio un'azienda o un punto di interesse). L'ID luogo è un identificatore univoco di un luogo nel database di Google Maps. Tieni presente che placeId è il modo più accurato per identificare un luogo. Se possibile, dovresti specificare placeId piuttosto che placeQuery. È possibile recuperare un ID luogo da qualsiasi richiesta all'API di Places, ad esempio TextSearch. Gli ID dei luoghi possono anche essere recuperati dalle richieste all'API di Geocoding. Per ulteriori informazioni, consultare lo overview of place IDs.

proof of concept fiddle

frammento di codice:

function initialize() { 
 
    var map = new google.maps.Map(document.getElementById("map_canvas")); 
 
    var directionsService = new google.maps.DirectionsService(); 
 
    var directionsDisplay = new google.maps.DirectionsRenderer({ 
 
    map: map 
 
    }); 
 
    directionsService.route({ 
 
    origin: { 
 
     'placeId': 'ChIJc1lGdwfP20YR3lGOMZD-GTM' 
 
    }, 
 
    destination: { 
 
     'placeId': 'ChIJdTGhqsbP20YR6DZ2QMPnJk0' 
 
    }, 
 
    waypoints: [{ 
 
     stopover: true, 
 
     location: { 
 
     'placeId': "ChIJRVj1dgPP20YRBWB4A_sUx_Q" 
 
     } 
 
    }], 
 
    optimizeWaypoints: true, 
 
    travelMode: google.maps.TravelMode.DRIVING 
 
    }, function(response, status) { 
 
    if (status === 'OK') { 
 
     directionsDisplay.setDirections(response); 
 
    } else { 
 
     window.alert('Directions request failed due to ' + status); 
 
    } 
 
    }); 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize);
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map_canvas"></div>