2016-08-26 2 views
0

Я использую google-направление api для решения проблемы коммивояжера.Как оптимизировать маршрут, используя API-интерфейс google

Очевидно, что api принимает параметр под названием optimize:true, а затем возвращает "waypoint_order": [ 1, 0, 2, 3 ], рассказывая вам лучший порядок путевых точек, который оптимизирует маршрут.

Вещь, когда вы пытаетесь оптимизировать маршрут, API просто не работает, и вы получаете NO_RESULTS.

Например, используйте этот URL-адрес, чтобы увидеть, как API сработает, когда добавляется бит optimize:true|.

НЕ работает (ошибка no_results):

https://maps.googleapis.com/maps/api/directions/json?origin=place_id:ChIJdd4hrwug2EcRmSrV3Vo6llI&destination=place_id:ChIJh1a5WhEMa0gRY1JU4PEam8Q&waypoints=optimize:true|place_id:ChIJPeqVDlONbEgRk4X1zrUsKDs|place_id:ChIJ_WegsaCYc0gRlCypaxXgLjs|&key=YOUR_KEY

РАБОЧАЯ (но не оптимизации):

НЕ оптимизации URL: https://maps.googleapis.com/maps/api/directions/json?origin=place_id:ChIJdd4hrwug2EcRmSrV3Vo6llI&destination=place_id:ChIJh1a5WhEMa0gRY1JU4PEam8Q&waypoints=place_id:ChIJPeqVDlONbEgRk4X1zrUsKDs|place_id:ChIJ_WegsaCYc0gRlCypaxXgLjs|&key=YOUR_KEY

Кто-нибудь знает, если они прекратили поддерживать оптимизацию маршрутов?

Благодаря

+0

Я видел, как это работает. Пожалуйста, предоставьте [mcve], демонстрирующий то, что вы видите. – geocodezip

ответ

1

кажется мне, как это ошибка в DirectionsService, когда вы проходите в PlaceIds. Я воспроизвел его с помощью Javascript API. Использование адресов работает:

waypts = []; 
    waypts.push({ 
    location: "Plymouth, UK", // {placeId:"ChIJPeqVDlONbEgRk4X1zrUsKDs"}, 
    stopover: true 
    }); 
    waypts.push({ 
    location: "Bournemouth, UK", // {placeId:"ChIJ_WegsaCYc0gRlCypaxXgLjs"}, 
    stopover: true 
    }); 
    var request = { 
    origin: "London, UK", //{placeId:"ChIJdd4hrwug2EcRmSrV3Vo6llI"}, 
    destination: "Newquay, UK", //{placeId: "ChIJh1a5WhEMa0gRY1JU4PEam8Q"}, 
    waypoints: waypts, 
    optimizeWaypoints: true, 
    travelMode: 'DRIVING' 
    }; 

fiddle using addresses (returns waypoint order=1,0)

Но один и то же место (я использовал этот placeIds, чтобы получить адреса выше) не работает с использованием placeIds:

waypts = []; 
    waypts.push({ 
    location: {placeId:"ChIJPeqVDlONbEgRk4X1zrUsKDs"}, 
    stopover: true 
    }); 
    waypts.push({ 
    location: {placeId:"ChIJ_WegsaCYc0gRlCypaxXgLjs"}, 
    stopover: true 
    }); 
    var request = { 
    origin: {placeId:"ChIJdd4hrwug2EcRmSrV3Vo6llI"}, 
    destination: {placeId: "ChIJh1a5WhEMa0gRY1JU4PEam8Q"}, 
    waypoints: waypts, 
    optimizeWaypoints: true, 
    travelMode: 'DRIVING' 
    }; 

fiddle using placeId (returns ZERO_RESULTS)

может быть связанным с этим вопросом в трекере вопросов: Issue 8979: Bug: Can't use combination of placeId and String for origin/destination

Смежные вопросы