Dépasser 23 waypoint par limite de requête sur Google les Directions de l'API (Entreprise/niveau de Travail)
Je voudrais utiliser le google directions API pour développer la planification de l'itinéraire d'un logiciel pour une société qui gère des chasse-neige en hiver et de l'aménagement de l'été. L'une des exigences de clients, c'est qu'il soit en mesure de calculer des itinéraires avec au moins 30 ( de préférence plus ) waypoints. Selon la documentation (cité ci-dessous) même de l'API Google Maps pour les Travaux les clients sont limités à seulement 23 points de passage par la demande.
Utilisation de la Google les Directions de l'API est soumis à une requête de la limite de 2 500 directions de demandes par jour. Des directions individuelles demandes peuvent contenir jusqu'à 8 points de cheminement intermédiaires dans la demande. L'API Google Maps pour Travailler les clients peuvent requête jusqu'à 100 000 directions de demandes par jour, avec un maximum de 23 points de cheminement a permis à chaque demande.
Quelqu'un est-il au courant d'une solution de contournement -- un -- de contourner ce problème?
Aussi, serait-il possible d'utiliser une solution de contournement pour le libre de l'API? J'entends le premier ministre comptes sont assez chers.
Merci!!
Marc
- Voici ma solution pour le problème. Notes: - Définir MAX_WAYPOINTS_PER_REQUEST à 8, 23, ou ce que vous voulez. - Chaque objet de requête qui est envoyée à Google est également enregistré dans le navigateur de la console pour vous d'inspecter.
- hey @CrazyTim je suis status="ZERO_RESULTS" pour certains point. si je supprime le point de son travail. comment ignorer le point de
- Je ne sais pas de manière à isoler le latlong qui est à l'origine de la ZERO_RESULTS erreur autre que vérifier manuellement chaque maillon de la chaîne. Il pourrait être préférable de poster cela comme une question distincte.
- hey j'ai mis une question de pile je pense que vous allez être la meilleure personne pour le sna. merci stackoverflow.com/questions/19116578/...
- j'ai résolu le problème, voir ce jsfiddle.net/67tbw/29
- Ceci est une technique de limitation imposée à appliquer "Vous ne pouvez pas télécharger toute la base de données" par Google. Utiliser une carte gratuite comme Wikimapia ou de l'OSM et de faire le routage sur votre copie.
Vous devez vous connecter pour publier un commentaire.
Vous sont correctes, le premier prix est plutôt cher partir de 10 000$, la dernière fois que j'ai parlé avec un google rep sur le téléphone.
J'ai trouvé une solution de contournement que j'ai mis en place de manière à bypasss le 8 waypoints limitation. J'ai été capable de le faire fonctionner.
Je l'ai fait par la réception de mes waypoints et à les diviser en différentes routes, mais les dessiner ensemble le même chemin.
Par exemple si il y avait 30 points de cheminement nécessaire, je voudrais attirer 4 lignes, mais avec la même couleur etc. Donc, fondamentalement, vous couper les points de passage dans les différentes voies de l'appel de la directions rendu à chaque fois comme si c'était une route différente. La clé est après la première route que l'itinéraire suivant doit commencer par le dernier point de cheminement de l'itinéraire précédent (cela permet de s'assurer que le tracé des lignes sont reliés les uns aux autres)
Il fonctionne, mais vous devez écrire beaucoup plus de code que ce que vous feriez si vous aviez un compte premier, et que vous appelez pour les directions beaucoup plus dans ce cas.
J'ai cherché et j'ai pensé à d'autres façons de le faire sans avoir un compte premier et ont échoué.
Bien que, quand je parle avec google, ils ont dit qu'ils avaient l'intention sur la création d'une structure de paiement pour les clients avec différents souhaits/besoins. Par exemple, si un client a juste besoin de plus de waypts et pas un groupe de plus l'orientation des demandes.
Espère que cette aide, comme il a travaillé pour moi dans une application pratique.
JS:
CSS:
HTML:
Avec le code suivant, vous pouvez utiliser autant d'étapes que vous avez besoin et vous n'aurez jamais d'erreur MAX_WAYPOINTS_EXCEEDED. N'oubliez pas de remplacer "YOUR_API_KEY" de votre CLÉ API ou supprimer &key=YOUR_API_KEY à partir de l'API google URL et définir la variable "max" pour 8 (max = 25 lors de l'utilisation de la CLÉ API, max = 8 lorsque vous n'utilisez pas de CLÉ API).
tripoter afficher/masquer les boutons de ligne
var map
etvar renderer
quelque part pour être accessibles plus tard. E. g.:window.gMap = map;
etif (!window.gRenderers) { window.renderers = []; } window.gRenderers.push(renderer);
et, plus tard, pour masquer/afficher l'utilisation de la margefor (var r of gRenderers) r.setMap(null);
à se cacher et àfor (var r of gRenderers) r.setMap(gMap);
à montrer. Btw pour masquer la ligne immédiatement par défaut ajoutersuppressPolylines = true
àrenderer.setOptions({})
. Malheureusement réglagesuppressPolylines
, plus tard, ne fonctionne pas (seulement lors de l'initialisation), de sorte que nous utilisons doivent utilisersetMap()
hack.Voici un hack pour utiliser plus de 8 points.Veuillez checkout ma solution pour que.
Le dessin de la feuille de route avec plus de 8 points de cheminement à l'aide de Google directions de l'API
Il est facile autour de cette solution.
Garder les points dans le tableau en fonction de la distance de la valeur seuil, et de garder les ajouter. Une fois que vous atteignez la limite de 8 valeurs dans le tableau, d'attribuer la 1ère position(Origine) du point de passage de tableau pour un nouveau waypoint tableau .... Attribuer le dernier point de passage vers le nouveau point de passage comme 2e élément... maintenant remplacer l'ancien waypoint tableau avec cette nouvelle et continuer.
Watever vous ne les waypoints ne sera jamais franchir plus de 8 valeurs et permet de garder une trace de l'itinéraire de la carte(Sauf si le voyage est trop long)
Le code ci-dessous en C# calcule le nombre d'appels que vous ferez Google Directions de l'API et de combien de points de cheminement à chaque itération. Vous pouvez modifier le Modmin de changer le minimum de points d'intérêt que vous voulez sur votre dernière itération.
Par exemple, si vous avez totalWaypoints.Count = 97:
97 Mod 23 = 5, dans ce cas, je veux un Modmin plus grand que 5, donc je vais calculer à nouveau avec une baisse de la waypointsByIteration;
97 Mod 22 = 9, (9 > Modmin) , OK;
itérations = ((97 - (97 % 22)) /(22)) + 1 = 5;
Sur la dernière itération waypointsByIteration sera le résidu.