Я создал код, чтобы нарисовать на карте направление рисования, но с полилинией, потому что с путевыми точками я могу просто увидеть восемь точек.Google maps direction
Во-первых у меня есть функция nArray()
которая возвращает мне значение, как показано в этой консоли:
Array[5]
0: Object
1: Object
DISTANCE_FROM_PREVIOUS_OBJECT_LOCATION: 2.087970147789207
lat: "48.866588"
leftPosition: 183
lng: "2.309037999999987"
topPosition: 57
__proto__: Object
2: Object
3: Object
4: Object
length: 5
__proto__: Array[0]
Теперь я хочу все объекты (широта, долгота), установленного в качестве отправной точки в:
<!DOCTYPE html>
<html>
<head>
<script src="http://maps.google.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
<script>
var map = null;
var directionService = null;
var directionsRenderer = null;
var bigArray = nArray();
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(35.75936182169444, -90.35907120698232),
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 4
};
map = new google.maps.Map(document.getElementById("map"), mapOptions);
directionService = new google.maps.DirectionsService();
directionsRenderer = new google.maps.DirectionsRenderer({ map: map });
}
function drawDirections(myPath) {
var myLine = new google.maps.Polyline({
path: myPath,
strokeColor: '#ff0000',
strokeOpacity: 1.0,
strokeWeight: 2
});
myLine.setMap(map);
}
function drawRoutes() {
var i;
var npts = bigArray.length - 1;
for (i = 0; i < npts; i++) {
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(bigArray[i].lat, bigArray[i].lng)
});
var request = {
origin: new google.maps.LatLng(bigArray[i].lat, bigArray[i].lng),
destination: new google.maps.LatLng(bigArray[i + 1].lat, bigArray[i + 1].lng),
travelMode: google.maps.DirectionsTravelMode.DRIVING
}
directionService.route(request, function(result, status) {
//route = result.routes[0];
if (status == google.maps.DirectionsStatus.OK) {
drawDirections(result.routes[0].overview_path);
}
});
}
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(bigArray[i].lat, bigArray[i].lng)
});
}
</script>
</head>
<body onload="initialize();">
<div id="map" style="width: 500px; height: 400px;"></div>
<input type="button" onclick="drawRoutes()" value="Draw Routes" />
</body>
</html>
Как получить широту и долготу для каждого объекта от nArray
?
так, что вы предлагаете? использовать путевые точки? –
Это было бы лучше. Но когда вам нужно больше 8 путевых точек, это не сработает (без бизнес-лицензии), возможные варианты: установите задержку между запросами (чтобы вы не достигли предела в секунду), когда массив содержит более 10 (в противном случае вам не потребуется обходной путь, путевые точки будут работать), разделить массив по частям с 10 точками и запросить указания для этих точек ... с помощью путевых точек (если у вас есть, например, 15 мест, это займет 2 запроса вместо 14 с вашей текущей стратегией) –
хорошо, но есть ли какой-то пример, вы можете показать мне jsfiddle? –