我被指派使用Google Maps API创建一个工具,以便餐厅可以用来定义送餐区域。这是进展情况:http://codepen.io/keithpickering/pen/NqdzKO
用户应该能够绘制一个多边形,之后它将会自动吸附到附近的道路以提高准确性。这个功能相对而言运作得很好,除了Google内置的吸附到路线功能有点不足之外。如果您的点不够接近,它要么会拒绝吸附到任何东西,要么就会生成一些奇怪的折线。
我需要的是这个工具在吸附到路线时更加“宽容”,换句话说,某人应该能够从任何缩放距离上懒散地绘制任何类型的多边形,而线条应该被强制吸附到一条或另一条道路。
这是我正在使用的代码部分:
我需要的是这个工具在吸附到路线时更加“宽容”,换句话说,某人应该能够从任何缩放距离上懒散地绘制任何类型的多边形,而线条应该被强制吸附到一条或另一条道路。
这是我正在使用的代码部分:
...
// Snap polygon to roads
placeIdArray = [];
runSnapToRoad(poly, path, color);
});
// Snap a user-created polyline to roads and draw the snapped path
function runSnapToRoad(poly, path, color) {
var pathValues = [];
for (var i = 0; i < path.getLength(); i++) {
pathValues.push(path.getAt(i).toUrlValue());
}
$.get('https://roads.googleapis.com/v1/snapToRoads', {
interpolate: true,
key: apiKey,
path: pathValues.join('|')
}, function(data) {
processSnapToRoadResponse(data);
drawSnappedPolyline(poly, path, color);
});
}
// Store snapped polyline returned by the snap-to-road method.
function processSnapToRoadResponse(data) {
snappedCoordinates = [];
placeIdArray = [];
for (var i = 0; i < data.snappedPoints.length; i++) {
var latlng = new google.maps.LatLng(
data.snappedPoints[i].location.latitude,
data.snappedPoints[i].location.longitude);
snappedCoordinates.push(latlng);
placeIdArray.push(data.snappedPoints[i].placeId);
}
}
是否有必要放弃Roads API并使用方向服务进行更定制化的解决方案?是否有人有任何想法?感谢任何和所有的帮助。