我们有json。在json有10纬度和10经度。我们尝试在这些点之间绘制线。但是我们得到了状态代码google.maps.DirectionsResult.MAX_WAYPOINTS_EXCEEDED
。所以在删除了两个点之后。现在我们试图画出8点之间的线,它工作得很好。但是在json中,有一段时间经过50到100纬度和经度。我们试过这样的
var aa=waypts[0].location.k;
var bb=waypts[0].location.D;
var cc=waypts[waypts.length-1].location.k
var dd=waypts[waypts.length-1].location.D;
var start1= new google.maps.LatLng(aa,bb);
var end1=new google.maps.LatLng(cc, dd);
var request = {
origin: start1,
destination: end1,
waypoints: waypts,
optimizeWaypoints: true,
travelMode: google.maps.TravelMode.DRIVING
};
debugger;
directionsService.route(request, function(response, status) {
debugger;
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
var route = response.routes[0];
}
});
首先告诉我如何划分超过8分。请指导我
答案 0 :(得分:5)
简短回答不是单一请求。
Google Maps Directions的文档说明了
MAX_WAYPOINTS_EXCEEDED
表示航路点过多 请求中提供的最大允许航点为8,加上 起源和目的地。 (Google Maps API for Work客户可以 包含最多23个航路点的请求。)
在使用限制标题下
免费API的用户最多可获得8个航点(加上原点和 目的地)允许在每个请求和总共2,500个方向 每24小时的请求。
因此,如果您运行多个请求,则可以一次获取8个航点(加上起点和终点)。请注意每24小时最多2,500个路线请求。
答案 1 :(得分:1)
您应该使用多个请求,如另一个答案所示。这是一个例子:
var service = new maps.DirectionsService();
function calcRoute(points, startIndex) {
var start = points[startIndex];
var destinationIndex = startIndex + 8 > points.length - 1 ? points.length - 1 : startIndex + 8;
var destination = points[destinationIndex];
function handlerRouteResult(result, status) {
var path = [];
if (status === maps.DirectionsStatus.OVER_QUERY_LIMIT) {
setTimeout(function() {
calcRoute(points, startIndex);
}, 100);
}
else if (status === maps.DirectionsStatus.OK) {
var overviewPath = result.routes[0].overview_path;
for (var routePointIndex = 0; routePointIndex < overviewPath.length; routePointIndex++) {
path.push(overviewPath[routePointIndex]);
}
} else {
for (var pointIndex = startIndex; pointIndex <= destinationIndex; pointIndex++) {
path.push(points[pointIndex]);
}
}
var line = new maps.Polyline({
map: map,
strokeColor: '#235c23',
path: path
});
}
var waypoints = [];
for (var waypointIndex = startIndex; waypointIndex < destinationIndex - 1; waypointIndex++) {
waypoints.push({ location: points[waypointIndex] });
}
service.route({
origin: start,
destination: destination,
travelMode: maps.DirectionsTravelMode.DRIVING,
waypoints: waypoints
}, handlerRouteResult);
}
for (var i = 0; i < pathPoints.length - 1; i += 8) {
calcRoute(pathPoints, i);
}
您还会收到许多API调用中的OVER_QUERY_LIMIT响应。在这种情况下,它将重试路由查询。
答案 2 :(得分:0)
正如其他人所说,使用谷歌的JavaScript API做到这一点是不可能的。但是,Google确实允许最多23个带有服务器端请求的航路点。因此,使用PHP和JavaScript,我能够解决方法。
我解释了here以及代码。
您需要做的是从服务器端请求获取“航点订单”,然后让JavaScript为您提供每个位置之间的路线。