• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

GMaps DirectionsService mehr als 10?

Cheffchen

Senior HTML'ler
Hallo,
Javascript ist nicht meins, stelle ich gerade wieder fest da ich jetzt 1woche rumprobiere und suche aber nichts funktioniert wie gewünscht.

Das Problem ich habe eine abfrage die Fahrzeiten berechnet und ausgibt aus G Maps, dank des Forum hier und den helfer: http://www.html.de/php/32987-fahrzeit-zwischen-mehreren-punkte-als-php-3.html
Der funktioniert super, ist aber leider V2.

Nun versuche ich seit langen das gleiche in V3 zu erstellen aber habe das gleiche problem das nur 10 Sachen berechnet werden und ich die callback funktion nicht hinbekomme da javascript einfach nicht meins ist, kann mir da einer helfen?

Das habe ich in V3, was aber leider alles auf einmal sendet und dann beim 10ten wert aufhört die Daten zurück zu senden.
dies ist natürlich stark vereinfacht, Später werden aus den egebnissen welchen ausgesucht und in Karten angezeit, was kein problem ist, nur halt die Fahrzeitberechnung bekomme ich nicht hin.
Code:
<script type="text/javascript">
var dist = [];
var disz = [];
var count = 1;
var txt = '';

var directionsService = new google.maps.DirectionsService();
request[0] = {origin: 'D, 36323 Grebenau', destination: '49.7421410, 11.8157992', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[1] = {origin: '49.7561410, 11.8597992', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[2] = {origin: '51.1646700, 14.9206500', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[3] = {origin: '51.4387800, 12.4457400', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[4] = {origin: 'D, 36323 Grebenau', destination: '51.1656700, 14.9306500', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[5] = {origin: 'D, 36323 Grebenau', destination: '52.5543600, 13.1417800', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[6] = {origin: '52.5282857, 13.6039737', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[7] = {origin: 'D, 36323 Grebenau', destination: '54.2700354, 12.4700563', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[8] = {origin: '52.8349029, 9.5751823', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[9] = {origin: '54.2700354, 12.4700563', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[10] = {origin: 'D, 36323 Grebenau', destination: '52.8389029, 9.5781823', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[11] = {origin: '52.5268000, 13.8045300', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[12] = {origin: '51.7114375, 14.2883425', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[13] = {origin: 'D, 36323 Grebenau', destination: '52.5262000, 13.8045300', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[14] = {origin: '50.9845507, 7.5191197', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[15] = {origin: '50.063418, 7.22631834', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
//usw.

for (index in request) {
   directionsService.route(request[index], function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {


         show( response.routes[0].legs[0].distance.value + ' | ' + response.routes[0].legs[0].duration.value ) 

      }
   });
}


function show(txt) {
        document.form1.inhalt.value += (txt  + '\r\n');
}
</script>
<form target="_self" action="#" name="form1" method="post">
 <textarea rows="50" cols="150" name="inhalt"></textarea>
</form>
Ich hoffe das mir eine Javascript Profie helfen kann, für den das bestimmt lächer ist aber mir hat das jetzt schon lebenszeit ohne ende geraubt.

Cheffchen
 
Moin Cheffechen,
Ich schätze du wirst auf den status google.maps.DirectionsStatus.MAX_WAYPOINTS_EXCEEDED stoßen.
Too many DirectionsWaypoints were provided in the DirectionsRequest. The total allowed waypoints is 8, plus the origin and destination. Maps API for Business customers are allowed 23 waypoints, plus the origin, and destination.
Das sind deine 10...

MfG
 
Die begrenzung gab es ja bei V2 auch und deswegen werden ja wie im Link oben (v2) die nach einander geschickt und nicht auf einmal.
das hat halt was mit javascript callback zu tun und davon habe ich null ahnung wie meine versuche zeigen.
Cheffchen
 
Theoretisch sollte es reichen, wenn du new google.maps.DirectionsService() an andere Stelle verschiebst.
Code:
var dist = [];
var disz = [];
var count = 1;
var txt = '';
var directionsService = null;

request[0] = {origin: 'D, 36323 Grebenau', destination: '49.7421410, 11.8157992', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[1] = {origin: '49.7561410, 11.8597992', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[2] = {origin: '51.1646700, 14.9206500', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[3] = {origin: '51.4387800, 12.4457400', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[4] = {origin: 'D, 36323 Grebenau', destination: '51.1656700, 14.9306500', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[5] = {origin: 'D, 36323 Grebenau', destination: '52.5543600, 13.1417800', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[6] = {origin: '52.5282857, 13.6039737', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[7] = {origin: 'D, 36323 Grebenau', destination: '54.2700354, 12.4700563', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[8] = {origin: '52.8349029, 9.5751823', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[9] = {origin: '54.2700354, 12.4700563', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[10] = {origin: 'D, 36323 Grebenau', destination: '52.8389029, 9.5781823', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[11] = {origin: '52.5268000, 13.8045300', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[12] = {origin: '51.7114375, 14.2883425', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[13] = {origin: 'D, 36323 Grebenau', destination: '52.5262000, 13.8045300', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[14] = {origin: '50.9845507, 7.5191197', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
request[15] = {origin: '50.063418, 7.22631834', destination: 'D, 36323 Grebenau', travelMode: google.maps.DirectionsTravelMode.DRIVING};
//usw.

for (index in request) {
   directionsService = new google.maps.DirectionsService();
   directionsService.route(request[index], function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {


         show( response.routes[0].legs[0].distance.value + ' | ' + response.routes[0].legs[0].duration.value ) 

      }
   });
   directionsService = null;
}


function show(txt) {
        document.form1.inhalt.value += (txt  + '\r\n');
}
Könnte gehen :grin:
 
Zurück
Oben