Google Developer Blog - China
谷歌中国 开发者网站 博客

Wednesday, March 11, 2009

请随意安排您的旅程

    使用过谷歌地图驾车路线查询吗?即使没用过,大概也能想象得出这是怎么回事——输入起点和终点,回车,地图上就会标出起点到终点的路线详情,欧~~了。
    不错,我可不是要来这里告诉你怎么使用这种基本操作的!
    截个图,先睹为快!
    
    估计你知道我要说什么吧,图上都有提示了!
    对,现在使用谷歌地图的驾车路线查询,把你的鼠标移到代表驾车路线的这条蓝线上,就会出现一个小圆圈,把它拖到你想经过的地点,地图就会自动重新查询,重新计算出从起点到终点、并且经过你所设定的中间点的新路线。而且,这样的中间点可以设置多个!
    注意了,只要能计算出有效路线,不等你松开鼠标,只要你稍微停顿,新路线就会动态给出,同时,给出里程和参考耗时,比如
 
 
    所以,拖动的目的,除了设置需要经过的地点,驾车路线查询现在也可以成为你避开某个地点或者规划行程的工具,比如需要回避拥堵或者管制路段。不知道怎么做?在回避路段周围多设几个经过点,我就不信避不开 :)
 
   也许你会问,如果我不仅仅需要经过某个地点,还想在这个地点上停靠,该怎么办呢?很简单,在拖动后出现的圆圈上点右键,选择“目的地”,或者在路线上的任何一点点击右键,选择“添加目的地”,如图:
         
    这样路线上就会增加一个绿色的图标作为新增的目的地,同时左边的驾车指示就会以目的地分割,一目了然。当然,你也可以在地图上任何一条路上点击右键并选择“添加为目的地”,查询路线会自动延伸至你新加的目的地。
    说到这里,就不能不提另一个与驾车路线有关的右键菜单——在地图上直接点击右键。
    如果你并不确定你的目的地或出发地的准确地址,那么,直接在地图上右键点击的的目标吧,并分别在弹出的菜单中选择“以此处为出发点的路线”或“到达此目的地的路线”就可以了。
   
   
    谷歌地图的驾车路线查询是没有范围限制的,不管你是查询城里的上班路线还是远隔千里的驾车旅游,相信你都能找到适合你的路线,请随意安排您的旅程吧!

    等等,你出门旅游还不想走高速,也不想走任何收费道路?这个......
    好吧,谷歌地图想到了,使用谷歌地图查询驾车路线,你现在可以选择“避开高速路”和“避免通行费”,赶紧到谷歌地图主页上找找下面这个截图藏在哪里吧,或许你会有更多新的发现,比如查找步行路线!当然,别忘了先指定出发地址和目的地址哦。

    
   
     如果你有新的建议和需求,可以到我们的用户论坛里提出,我们会努力把地图做得更好!


    如果你是谷歌地图API的开发者,可能你会对下面的内容更感兴趣。
    :这个在谷歌地图API里面有对应的方法吗?可以使用谷歌地图API在自己的地图上实现这个功能吗?
    :嗯,现在还没有直接的方法可以让你一步到位,但使用谷歌地图API我们可以实现相似的功能。还是看一下API中的哪些类和方法和这个能够拖拽的驾车路线查询有关系吧。
    1、在API中使用驾车路线的核心类是GDirections
    • 使用GDirections的loadFromWaypoints()方法,可以查询经过多个点的路线,这些点可以是地址名称,也可以是坐标,但是要保证这些地址和坐标都能够被正确解析。示例代码如下:
                   var directions = new GDirections (map, panel);
                   var wayPoints = ["北京市清华园科建大厦","北京市海淀区中关村大街","北京市王府井"];
                   directions.loadFromWaypoints(wayPoints);
    • 使用GDirections的getPolyline()方法,可以取得查询路线对应的polyline,但是需要注意polyline必须在查询结果可用之后才可以取到,所以,你需要监听GDirection的addoverlay事件,这个事件是在polyline添加到地图上以后才触发的,所以这能保证我们可以得到正确的polyline。比如:
                    GEvent.addListener(directions, "addoverlay", function(){
                        polyline = directions.getPolyline();
                     });
    • 使用GDirectionsOptions,你可以设定avoidHighways属性为true,那么你的地图查询结果也可以避开高速路了。GDirectionsOptions里还有其他一些有趣的属性,比如可以设定travelMode,指定查询驾车路线或步行路线。
    2、要让用户通过拖拽动态改变路线,接下来需要关注的就是GPolyline类了:
    • 你需要动态改变polyline的editing状态,这里需要注意GPolyline的drawing和editing状态的区别,你可以把下面两个方法里面的Editing换成Drawing,看看会是什么样的结果比如:
                GEvent.addListener(polyline, "mouseover", function(){
                  polyline.enableEditing();
                });
                GEvent.addListener(polyline, "mouseout", function(){
                 polyline.disableEditing();
                });
    • polyline改变后会触发lineupdated事件,你需要监听这个事件,并再次调用directions.loadFromWaypoints()方法得到新的路线。
    3、其他还有一些问题需要考虑,比如怎么得到和验证新的地点坐标,判断新的地点在wayPoints数组中的index等等,相信这些都不会难住聪明的你。

    怎么样,赶紧动手试试吧,说不定你能做出更好更方便的驾车路线查询,别忘了和大家分享奥。
    在你使用谷歌地图API 的过程中,如果遇到问题和困难,欢迎访问谷歌地图API中文论坛 ,在那里有很多专家和热心的好手们会帮你解决问题:


3 Comments:

  • 你的博客很不错,我做了一个将1000个博客链接拼成一幅大图的博客拼图网,其中就收录了你的博客,欢迎你来找找看,也欢迎交换链接。我的博客,面谱 www.mianpu1000.com

    By Anonymous licufa, At March 12, 2009 9:23 AM  

  • 虽然谷歌的市场份额不大,但是还是喜欢谷歌,而不喜欢百度。

    By Blogger Bruce GAO, At March 29, 2009 6:51 AM  

  • 欣赏你的博客,喜欢谷歌页不是百度http://www.happygool.com

    By Anonymous Anonymous, At June 21, 2009 4:36 PM  

Post a Comment



Links to this post:

Create a Link

<< Home