将代码从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个用户,所以我不知道昂贵的营业执照是否值得回报。谷歌地图团队的电子邮件尚未退回。任何变通办法/指针都会有很大的帮助。感谢。
答案 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"}
]
}