Мне было поручено использовать API Карт Google для создания инструмента, который ресторан может использовать для определения зон доставки. Вот прогресс: http://codepen.io/keithpickering/pen/NqdzKOAPI Карт Google Maps: сделать «привязку к дороге» более прощающей
Пользователи должны иметь возможность нарисовать многоугольник, после чего он будет быстро приближаться к близлежащим дорогам. Это работает относительно хорошо, за исключением того факта, что встроенная функция Google для работы с дорогой ... ну, вроде отстой. Если ваши очки не будут достаточно близко друг к другу, они либо откажутся от привязки к чему-либо, либо просто сделают какую-то странную чертову линию.
Что мне нужно для того, чтобы инструмент был более «прощающим» с его привязкой к дороге; другими словами, кто-то должен лениво рисовать практически любой вид многоугольника с любого расстояния масштабирования, а линии должны быть FORCED, чтобы привязываться к одной дороге или другой.
Вот часть кода я использую оснастки:
...
// 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);
}
}
Будет ли это необходимо, чтобы отказаться от API на дорогах и идти на более индивидуальное решение, используя сервис направления? У кого-нибудь есть идеи? Спасибо за любую помощь.
Если вы рассматриваете альтернативы, ответ [здесь] (http://stackoverflow.com/questions/10513360/polyline-snap-to-road-using-google-maps-api-v3) может помочь. Он использует направления вместо Roads api. – Andy
@ Andy Это то, что я хотел бы сделать, но так как этот пример не использует Drawing Tools, он не работает из коробки. Как я могу получить значения «origin» и «destination» в событии «polygoncomplete»? –