2016-04-21 4 views
5

Маршрут создать только если я использую LatLng или String, Титулы, но мне нужно создать его PlaceId, но он не работаетGoogle Maps API (JS) Создание маршрута с использованием PlaceId в путевых точек

пример:

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

Вы пробовали проверить эту связанный [SO вопрос] (http://stackoverflow.com/questions/33990153/пасс-место-ID местоположения до пункта назначения-в-Google-картах-API)? Каковы ваши журналы ошибок? – abielita

+0

Я пробовал, но без результатов. placeId работает только для источника и места назначения. В результате я НЕ НАЙДЕН –

ответ

4

Просто нужно передать объект google.maps.Place в качестве местоположения путевой точки. Например:

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

расположение указывает местоположение путевой точки, как LatLng, как объект google.maps.Place или в виде строки, которые будут геокодированной.

Google Maps - Direction Services Documentation

Here's the JsFiddle

3

Я получаю яваскрипт ошибки с публикуемым кодом: Uncaught TypeError: google.maps.Place is not a constructor на этой линии:

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

Вы должны указать, что location так же, как вы делаете с origin и destination placeID:

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

Описание в documentation:

Спецификация объекта Google.maps.Place

placeId | Тип: строка Идентификатор места места (например, бизнес или достопримечательность). Идентификатор места - это уникальный идентификатор места в базе данных Google Maps. Обратите внимание, что placeId является наиболее точным способом определения места. Если возможно, вы должны указать placeId, а не placeQuery. Идентификатор места можно получить из любого запроса в API Places, например TextSearch. Идентификаторы места также могут быть получены из запросов в API геокодирования. Для получения дополнительной информации см. overview of place IDs.

proof of concept fiddle

фрагмент кода:

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>