如何通过API V3获取Google地图上显示的路线的航点列表?

时间:2011-05-27 12:20:55

标签: google-maps google-maps-api-3

Google Maps API的 GDirections 类帮助我“显示”两个提供坐标之间的路线。

现在我需要一个 ALL 列表,列出该路线上的坐标。

有关如何获得此信息的任何提示?

修改 刚刚发现http://code.google.com/apis/maps/documentation/javascript/reference.html#DirectionsRoute

overview_path 属性提供路线的所有航点的列表。 DirectionsRoute 是解决此问题的合适类吗?或者我错过了一些观点?

编辑 - 2

在下面 mkram0 显示的this link的帮助下,我修改了以下代码:

显示地图。 路线IS正在显示。

我在考虑在路线的前四个坐标上放置标记。这些标记不会显示。有帮助吗?请。

directionsService.route (request, 
                            function (result, status) 
                            {
                                if (status == google.maps.DirectionsStatus.OK)
                                {
                                    directionsDisplay.setDirections (result);

                                    for (var route in result.routes) 
                                    {
                                        for (var leg in route.legs) 
                                        {
                                            for (var step in leg.steps) 
                                            {
                                                for (var latlng in step.path) 
                                                {
                                                    pointsArray.push(latlng);
                                                }
                                            }
                                        }
                                    }

                                    var point1 = new google.maps.Marker ({
                                        position:pointsArray[0],
                                        draggable:true,
                                        map:map,
                                        flat:true
                                        });

                                    var point2 = new google.maps.Marker ({
                                        position:pointsArray[1],
                                        draggable:true,
                                        map:map,
                                        flat:true
                                        });

                                    var point3 = new google.maps.Marker ({
                                        position:pointsArray[2],
                                        draggable:true,
                                        map:map,
                                        flat:true
                                        });

                                    var point4 = new google.maps.Marker ({
                                        position:pointsArray[3],
                                        draggable:true,
                                        map:map,
                                        flat:true
                                        });
                                }
                            });

3 个答案:

答案 0 :(得分:6)

自己解决了这个问题:) overview_path 是显示坐标的正确方法w.r.t: 只是为了检查这是否真的显示了什么,我在前四个坐标上显示了标记。

directionsService.route (request, 
                            function (result, status) 
                            {
                                alert(status);
                                if (status == google.maps.DirectionsStatus.OK)
                                {
                                    directionsDisplay.setDirections (result);

                                    var pointsArray = [];

                                    pointsArray = result.routes[0].overview_path;

                                    var point1 = new google.maps.Marker ({
                                        position:pointsArray[0],
                                        draggable:true,
                                        map:map,
                                        flat:true
                                        });

                                    var point2 = new google.maps.Marker ({
                                        position:pointsArray[1],
                                        draggable:true,
                                        map:map,
                                        flat:true
                                        });

                                    var point3 = new google.maps.Marker ({
                                        position:pointsArray[2],
                                        draggable:true,
                                        map:map,
                                        flat:true
                                        });

                                    var point4 = new google.maps.Marker ({
                                        position:pointsArray[3],
                                        draggable:true,
                                        map:map,
                                        flat:true
                                        });

答案 1 :(得分:3)

overview_path doc说它返回

  

表示的LatLng数组   这条路线的整个过程。路径   为了使它成为简化   适合在小的环境中使用   需要顶点数。

我不认为这与在路线上返回所有航点的数组相同。在你的问题中,我不清楚你是想要航点还是坐标(拉长)或两者兼而有之。如果我是你,我也会考虑legs,它会返回

  

每个DirectionsLegs数组   其中包含有关的信息   它组成的步骤。那里   对于每个航路点或将是一条腿   目的地指定。

DirectionsLeg内,我认为您还应该看看stepsvia_waypoints

答案 2 :(得分:0)