在谷歌地图上规划路线

24

我该如何使用Google Maps API来绘制路线呢?例如,将一堆路径点加载到地图上(我已经做到了),并从它们中的每一个点绘制一条线路,向用户展示他们可以走的路线,以便看到所有这些点?当用户查看地图时,我该如何加载这些路线呢?


如果我可以添加一些内容来澄清,请告诉我。 - RedBlueThing
@Cannonade 是的,那会很好...抱歉...我能得到一个例子吗?我有点困惑。 - Skizit
我会尽快实现一个例子并更新我的答案。 - RedBlueThing
我已经更新了我的答案,加入了更多的示例代码和一个可工作的链接。希望这能有所帮助。 - RedBlueThing
有人能帮我解决 https://stackoverflow.com/questions/64495330/having-issue-with-plotting-the-routes-on-the-google-map 的问题吗? - Sukhpal Singh
3个回答

29

您可以在 DirectionsService 对象上设置waypoints属性,并通过您的数组中的所有点绘制从源到目的地的路径:

中间路线点的数组。 方向将通过此数组中的每个中间路线点 从起点到目的地计算。

一旦您设置了waypoints属性,您就要调用路线方法来计算方向:

route(request:DirectionsRequest, callback:function(DirectionsResult, DirectionsStatus)))

一旦您获得了 DirectionsResult,您可以使用 DirectionsRenderer 对象将结果渲染在 Google Map 上。

使用有效示例进行更新

以下代码通过三个路标点的数组,在硬编码的起始点和终点之间发出方向请求:

// three points through which the directions pass
var point1 = new google.maps.LatLng(-33.8975098545041,151.09962701797485);
var point2 = new google.maps.LatLng(-33.8584421519279,151.0693073272705);
var point3 = new google.maps.LatLng(-33.84525521656404,151.0421848297119);

// build an array of the points
var wps = [{ location: point1 }, { location: point2 }, {location: point3}];

// set the origin and destination
var org = new google.maps.LatLng ( -33.89192157947345,151.13604068756104);
var dest = new google.maps.LatLng ( -33.69727974097957,150.29047966003418);

var request = {
        origin: org,
        destination: dest,
        waypoints: wps,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
        };

您可以在此处找到此代码的可工作示例(源代码)。

注意: 请记住,除非您切换到商业账户,否则您只能在数组中使用最多八个路标。


A、B、C在地图上显示为标记。它们是在哪里设置的?我该如何将它们更改为空白或更改为地点的标题? - LTech

1
你可以使用静态地图,然后循环遍历你的点,并使用路径参数绘制这些点。
类似于以下代码:
&path=color:blue|weight:5|45.123,-123.595|46.456,-124.985

3
请问您能分享一下您所说的完整代码吗? - Rupesh Arora

1

我已经在Android上完成了这个任务。 谷歌有一个相关的服务,这是链接 https://developers.google.com/maps/documentation/roads/intro

您可以在此页面上找到一个API调用的示例,以及一些网络指令。 https://developers.google.com/maps/documentation/roads/snap

这是一个调用服务的示例网络请求。 https://roads.googleapis.com/v1/snapToRoads?path=-35.27801,149.12958|-35.28032,149.12907|-35.28099,149.12929|-35.28144,149.12984|-35.28194,149.13003|-35.28282,149.12956|-35.28302,149.12881|-35.28473,149.12836&interpolate=true&key=YOUR_API_KEY

如果我没记错的话,每个调用最多可以有100个点,并且无论点数如何,每个调用都会收费。

上述调用还可以配置为捕捉道路。

就地图加载时绘制路径而言,这取决于您使用的技术。我知道在.NET WinForms中很容易实现。
如果您在问题中发表评论,告诉我您使用的技术,我可能能够给出一些建议。
如果您想免费测试您的路径,我找到了一个很不错的网站: https://www.darrinward.com/lat-long/ 希望对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接