在Google Maps v3中绘制超过8个航点

时间:2013-11-07 23:28:42

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

将代码从Javascript API 2迁移到3.我有一个位置列表,我需要以行车路线的形式绘制。这是在v2中使用以下代码

完成的
directions = new GDirections(map);
directions.loadFromWaypoints(waypoints, {preserveViewport: true});  

这是我尝试将其转换为V3

var request = {
    origin: startLoc,
    destination: endLoc,
    waypoints: waypoints,
    optimizeWaypoints: true,
    travelMode: google.maps.TravelMode.DRIVING
};          

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

不是整个代码,而是一般的想法。似乎工作正常,有一个小问题。当有超过8个航点时,呼叫失败。这是预期的Google Maps API v3 Docs

  

允许的最大航点为8,加上原点和目的地。 Maps API for Business客户可以使用23个航点,以及原点和目的地。公交路线不支持航点。

由于我没有在v2中遇到过这个问题,这是对v3的新限制吗?我想知道我是否使用的东西不是我需要的东西。这是一个非常轻微的应用程序与2个用户,所以我不知道昂贵的营业执照是否值得回报。谷歌地图团队的电子邮件尚未退回。任何变通办法/指针都会有很大的帮助。感谢。

3 个答案:

答案 0 :(得分:12)

一种可能的解决方法(特别是对于轻度使用的网站)是使用多个DirectionsService请求。

答案 1 :(得分:2)

使用应该需要使用像这样的数组概念...

directionsService[i].route({                                    
                    'origin': start,
                    'destination': end
                    'waypoints': waypts,
                    'travelMode': 'DRIVING'
                       },
                    function (directions, status){              
                                if (status == google.maps.DirectionsStatus.OK) {
                                    directionsDisplay[j].setDirections(directions);
                                }
                            });

在这些directionservice和directiondisplay中应该是数组逻辑 并且使用循环概念使用时应该需要动态分配起点,终点和航点 尝试发送多个请求意味着你将获得n个latlon的路由...但是标记ll在8个路点后重复相同的名称,我们通过使用supressmarkers false属性删除默认标记... < / p>

答案 2 :(得分:0)

正如其他人所说,使用谷歌的JavaScript API做到这一点是不可能的。但是,Google确实允许最多23个带有服务器端请求的航路点。因此,使用PHP和JavaScript,我能够解决方法。

你要做的就是获得&#34;航路点顺序&#34;从服务器端请求,然后让JavaScript为您提供每个位置之间的路线。

{ 

  abc: [
     {"name":"kushan"}

  ]

}