Google Map V3, how to get list of best driving route for multiple destinations?

前端 未结 3 1050
情书的邮戳
情书的邮戳 2021-01-30 03:14

i would like to use Gmap API to calculate the best driving route for many destinations. I have read this page:

http://googlegeodevelopers.blogspot.de/2010/03/good-day-f

相关标签:
3条回答
  • 2021-01-30 03:57

    You might want to look at the Distance Matrix service: https://developers.google.com/maps/documentation/javascript/distancematrix

    It gives you distances between a set of origins and destinations, and might help you with narrowing down options.

    0 讨论(0)
  • 2021-01-30 04:00

    The link you refer to explains how to do this: admittedly you also get back some directions information you don't care about, but you can simply ignore it.

    To be clear, you just make a directions request with some waypoints (say B,C and D) in addition to your origin and destination (A and E).

    If using the web service, ensure you set optimize:true before listing your waypoints, and check the waypoint_order array (near the bottom of the result for this url) to get the info you want:

    http://maps.googleapis.com/maps/api/directions/json?origin=Adelaide,SA&destination=Adelaide,SA&waypoints=optimize:true|Barossa+Valley,SA|Clare,SA|Connawarra,SA|McLaren+Vale,SA&sensor=false
    

    If use the JS API, set optimizeWaypoints:true in your request.

    As always, be sure you're abiding by the terms of service (e.g. results from your web service request must be displayed on a Google Map)

    0 讨论(0)
  • 2021-01-30 04:16

    after hous of search i used this package https://github.com/alexpechkarev/google-maps with those parametres below :

    $origin = ['lat' => 35.762288, 'lng' => -5.866525, 'ville' => 'tanger'];
        $destination = ['lat' => 33.565567, 'lng' => -7.552402, 'ville' => 'casablanca'];
        $points = [
            ['lat' => 33.951825, 'lng' => -6.839634, 'ville' => 'rabat'],
            ['lat' => 35.475028, 'lng' => -6.015167, 'ville' => 'assilah'],
            ['lat' => 35.178713, 'lng' => -6.132972, 'ville' => 'laarach'],
            ['lat' => 34.868921, 'lng' => -6.247939, 'ville' => 'moulay Bouslham'],
            ['lat' => 33.834129, 'lng' => -6.054144, 'ville' => 'khmissat'],
            ['lat' => 35.574788, 'lng' => -5.360490, 'ville' => 'Tetouan'],
    
        ];
    
        $wayPointsString = collect($points)->transform(function ($point) {
            return $point['lat'] . ',' . $point['lng'];
        })->implode('|');
    
        $data = \GoogleMaps::load('directions')
            ->setEndpoint('json')
            ->setParam([
                'origin' => collect($origin)->take(2)->implode(','),//tanger
                'destination' => collect($destination)->take(2)->implode(','), // casablanca
                'waypoints' => ['optimize:true|' . $wayPointsString
                ],
                'mode' => 'driving',
                'alternatives' => true,
                'departure_time' => 'now',
            ])
            ->get();
    
        $data = json_decode($data, true);
        $points_ = [];
        $points_[] = $origin;
    
        foreach ($data['routes'][0]['waypoint_order'] as $key => $value) {
            $points_[] = $points[$value];
        }
        $points_[] = $destination;
        dd($points_);
    

    as a response :

    array:8 [
      0 => array:3 [
        "lat" => 35.762288
        "lng" => -5.866525
        "ville" => "tanger"
      ]
      1 => array:3 [
        "lat" => 35.574788
        "lng" => -5.36049
        "ville" => "Tetouan"
      ]
      2 => array:3 [
        "lat" => 35.475028
        "lng" => -6.015167
        "ville" => "assilah"
      ]
      3 => array:3 [
        "lat" => 35.178713
        "lng" => -6.132972
        "ville" => "laarach"
      ]
      4 => array:3 [
        "lat" => 34.868921
        "lng" => -6.247939
        "ville" => "moulay Bouslham"
      ]
      5 => array:3 [
        "lat" => 33.834129
        "lng" => -6.054144
        "ville" => "khmissat"
      ]
      6 => array:3 [
        "lat" => 33.951825
        "lng" => -6.839634
        "ville" => "rabat"
      ]
      7 => array:3 [
        "lat" => 33.565567
        "lng" => -7.552402
        "ville" => "casablanca"
      ]
    ]
    
    0 讨论(0)
提交回复
热议问题