2017-07-12 3 views
1

Je suis en train de relier différents marqueurs sur une carte ensemble. Pour l'instant, les marqueurs ont été codés en dur, mais ils seront alimentés sur le site Web par des tablettes envoyant leurs emplacements GPS à intervalles réguliers. Pour une raison quelconque, si je saisis plus de 10 marqueurs, la polyligne ne s'affiche plus. Quelqu'un peut-il m'aider à comprendre pourquoi cela arrive? Merci.API Google Maps Service Direction ne montrant pas plus de 10 marqueurs

<html> 
    <head> 
    </head> 

    <body> 
     <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
     <script type="text/javascript"> 
      var geocoder; 
      var map; 
      var directionsDisplay; 
      var directionsService = new google.maps.DirectionsService(); 
      var locations = [ 
       ['16:58', -20.1672799707871, 57.5069032768888], 
       ['17:00', -20.170670813731, 57.5032840805832], 
       ['17:01', -20.1712602810727, 57.502503950733], 
       ['17:04', -20.166955925865, 57.4892648490453], 
       ['17:07', -20.1761991610139, 57.4822988090064], 
       ['17:10', -20.1961753165077, 57.4824656045157], 
       ['17:13', -20.220309405427, 57.487469732469], 
       ['17:16', -20.2342861943874, 57.4996038055266], 
       ['17:19', -20.2419951166671, 57.4924547310887], 
       ['17:22', -20.2418197976697, 57.4838445649936], 
       ['17:25', -20.2417927882899, 57.4821667460937], 
       ['17:28', -20.244868944177, 57.4761929726994], 
       ['17:31', -20.2494147017248, 57.4751336596163], 
       ['17:34', -20.2529453707358, 57.4698643969492], 
       ['17:37', -20.2515653985995, 57.4694827601669] 
      ]; 

      function initialize() { 
       directionsDisplay = new google.maps.DirectionsRenderer(); 


       var map = new google.maps.Map(document.getElementById('map'), { 
       zoom: 12, 
       center: new google.maps.LatLng(-20.23, 57.49), 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
       }); 
       directionsDisplay.setMap(map); 
       var infowindow = new google.maps.InfoWindow(); 

       var marker, i; 
       var request = { 
       travelMode: google.maps.TravelMode.DRIVING 
       }; 
       for (i = 0; i < locations.length; i++) { 
       marker = new google.maps.Marker({ 
        position: new google.maps.LatLng(locations[i][1], locations[i][2]), map: map 
       }); 

       google.maps.event.addListener(marker, 'click', (function(marker, i) { 
        return function() { 
        infowindow.setContent(locations[i][0]); 
        infowindow.open(map, marker); 
        } 
       })(marker, i)); 

       if (i == 0) request.origin = marker.getPosition(); 
       else if (i == locations.length - 1) request.destination = marker.getPosition(); 
       else { 
        if (!request.waypoints) request.waypoints = []; 
        request.waypoints.push({ 
        location: marker.getPosition(), 
        stopover: true 
        }); 
       } 

       } 
       directionsService.route(request, function(result, status) { 
       if (status == google.maps.DirectionsStatus.OK) { 
        directionsDisplay.setDirections(result); 
       } 
       }); 
      } 
      google.maps.event.addDomListener(window, "load", initialize); 
     </script> 
     <div id="map" style="width: 100%; height: 100%"> 
     </div> 
    </body> 
</html> 
+0

Peut-être que je manque quelque chose, mais je ne vois aucune google.maps.PolyLine() appel – rrd

+0

question connexe à l'exemple enfilant de multiples directions demande ainsi: [Google API Google Maps pour obtenir itinéraire de bus] (https://stackoverflow.com/questions/15315347/google-maps-api-to-get-bus-route) – geocodezip

+0

double possible de [Google Maps JavaScript polylignes: problème pour connecter tous les GPS donné emplacements] (https://stackoverflow.com/questions/27609872/javascript-google-maps-polylines-issue-in-connecting-all-given-gps-locations) – geocodezip

Répondre

0

Vous ne pouvez pas dessiner une largeur de polyligne de plus de 8 points plus le départ et la destination:

Google Maps Directions:

MAX_WAYPOINTS_EXCEEDED indique que trop de points de passage ont été fournis dans la demande Le les points de passage maximum autorisés sont 8, plus l'origine et la destination. (API Google Maps pour les clients de travail peuvent contenir des demandes avec jusqu'à 23 points de passage.)

C'est parce que l'API gratuite est limitée à:

Les utilisateurs de l'API gratuit obtenir jusqu'à 8 points d'intérêts (plus origine et destination) autorisé dans chaque demande et un total de 2 500 demandes de directions par période de 24 heures.

Essayez diviser votre polyligne en demande plusieurs