1

Je travaille actuellement sur l'envoi d'une image google map dans un email html.Est-il possible d'appeler une API Google et obtenir l'image de la carte et enregistrer l'image dans un endroit

Actuellement j'utilise static-maps-api pour accomplir ma tâche. Je vais appeler les cartes statiques api et définir l'URL de l'image comme src Dans une balise d'image.

<img src="https://maps.googleapis.com/maps/api/staticmap?markers=icon:http://mailadapterdev.vanapi.com/static/start.png|13.82,100.54&markers=icon:http://mailadapterdev.vanapi.com/static/waypt1.png|13.80,100.54&markers=icon:http://mailadapterdev.vanapi.com/static/waypt2.png|13.81,100.52&markers=icon:http://mailadapterdev.vanapi.com/static/waypt3.png|13.79,100.54&markers=icon:http://mailadapterdev.vanapi.com/static/dest.png|13.79,100.53&path=weight:3|color:blue|enc:[email protected]?HGLMX?VV`[email protected]|[email protected]@[email protected]`[email protected]`[email protected]@[email protected]`[email protected]@[email protected]|[email protected]@[email protected]~B{[email protected]@[A[[email protected]@[email protected][email protected]@[email protected][[email protected]?}A][email protected]@|A\J?JOIsCJgC?[[email protected]^[email protected]`[email protected]@[email protected]@[email protected]@DHDN?TC`@IFW^[email protected][[email protected]@[email protected]|@`@[email protected]{D~J}[email protected]@[email protected]`@Q^[email protected]{[email protected]@}[email protected]?LlCH~DI_EMmCH?|@BdA?lA?nCBfADlAFrDHnEH|ELtIRjAB|[email protected]`[email protected]@[email protected]@[email protected]@}[email protected]~AcE`[email protected]@[email protected]\mC|@[email protected]]XkAZuBX}[email protected]@[email protected]`[email protected][email protected]@[email protected][email protected][email protected]@[email protected]|GrB`I`CYnA_BpH{A`H&key=MY_API_KEY=400x400" > 

avant d'appeler la api cartes statiques, je vais appeler le directions-api avec le long lat et obtenir la polyligne, avec polyligne que je reçois de l'API directions d'appel, je vais appeler l'API statique des cartes.

Mon problème est

Lorsque le nombre de points ÉTENDRA (plus de 5 normalement) la polyligne devenir très grand et l'URL deviendra longtemps, si elle est supérieure à 2048 caractères, je ne peux pas voir mon carte google ne l'identifie pas comme une URL valide. donc c'est évident.

Mes questions sont

  1. est-il de toute façon de réduire la taille de la ligne ploy?
  2. Y at-il de toute façon pour appeler une API Google et obtenir l'image et l'enregistrer dans mon serveur.
  3. Si je peux faire le deuxième point, est-il illégal d'enregistrer google maps sur mon serveur, au lieu d'appeler google server pour obtenir l'image chaque fois que je veux.
  4. Existe-t-il d'autres façons d'accomplir ma tâche?

Je suis coincé dans ce problème depuis plus de 2 semaines maintenant. J'ai presque tout essayé. aidez-moi s'il vous plaît à résoudre ce problème.

Merci d'avance.

Répondre

2

Je vais répondre à ma propre question - que pour une partie 1,

Une façon de réduire la taille de la polyligne est d'utiliser polyline encoding. Pour voir comment cela fonctionne, vous pouvez utiliser this interactive sample

Pour Node.js j'ai utilisé simplify-path et polyline modules à mettre en œuvre.

ÉTAPES

  1. cal la Directions API avec vos données à long lat et obtenir la liste polyligne
  2. decode la ligne ploy en utilisant le module polyline
  3. simplifier le chemin en utilisant le module simplify-path.
  4. enfin encode les détails que vous avez obtenu de 3 e étape à l'aide encode dans polyline Module

Exemple

var simplify_path = require("simplify-path"); 
var polyline  = require("polyline"); 

var poly_line = "overview polyline from directions API"; 

var path = polyline.decode(poly_line); 
var tolerance = 10; 

path = simplify_path(path, tolerance) 
var new_polyline = polyline.encode(path); 

console.log("old_plyline "+JSON.stringify(poly_line)); 
console.log("new_polyline "+JSON.stringify(new_polyline)); 

Vous obtiendrez une ligne simplifiée ploy relativement courte.

semble assez simple: D

+0

Je serais surpris si vous avez encore besoin de ceci lorsque vous utilisez le 'overview_polyline' d'un itinéraire est que tu utilises? Celui-là est déjà simplifié. – miguev

2

répondre à des questions 2 et 3. Vous ne pouvez pas enregistrer une image sur votre serveur. Il est interdit par les conditions d'utilisation.

Regardez le paragraphe 10.1 (a) de ToS

Pas d'accès aux API ou contenu, sauf par le Service. Vous n'accéderez pas au (x) API (s) Maps ou au Contenu à l'exception du Service. Par exemple, vous ne devez pas accéder à des mosaïques de carte ou à des images via des interfaces ou des canaux (y compris des interfaces Google non documentées) autres que les API Maps.

https://developers.google.com/maps/terms#10-license-restrictions

+0

Dans la même section cependant (10.5):> Vous ne pré-extrayez, ne cachez pas, n'indexez ou ne stockez aucun Contenu à utiliser en dehors du Service, sauf que vous pouvez stocker des quantités limitées de Contenu uniquement dans le but d'améliorer les performances de votre implémentation de l'API Maps en raison de la latence du réseau ... – XstiX

3

Je vous répondrai en ligne:

  1. est-il de toute façon de réduire la taille de la ligne de poly?
    Oui,, Google utilise des polylignes codées et here vous pouvez trouver le processus de création. Vous pouvez également trouver un Interactive Polyline Encoder Utility, et vous pouvez également envisager d'utiliser la bibliothèque de Google appelée Geometry et sa méthode encodePath(). Recherchez la référence here.
  2. Y at-il de toute façon pour appeler une API Google et obtenir l'image et l'enregistrer dans mon serveur.
    Pas, comme indiqué par xomena

  3. Si je peux faire le deuxième point, est illégal pour enregistrer google maps dans le mon serveur, au lieu du serveur google appel pour obtenir l'image chaque fois que je veux ?
    Pas, comme indiqué par xomena

  4. Y at-il d'autres moyens que je peux réaliser ma tâche.
    Oui, comme indiqué à ma réponse à votre première question, vous avez la possibilité d'utiliser Google's Geometry library