1

В настоящее время я работаю над отправкой изображения карты Google в html-письме.Можно ли вызвать API Google и получить изображение карты и сохранить изображение где-нибудь

В настоящее время я использую static-maps-api для выполнения своей задачи. я буду называть статические карты api и установить URL-адрес изображения как src В теге изображения.

<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" > 

перед вызовом API статических карт, я буду называть directions-api с латами долго и получить ломаную линию, с ломаным я получаю от направления вызова API, я буду называть API статических карт.

Моя проблема заключается в

Когда количество путевых точек увеличение (более чем 5 нормально) ломаная становится очень большим, и URL будет длинным, если он больше, чем 2048 символов, я не могу просмотреть мой карта . Google не идентифицирует его как действительный URL. так что это очевидно.

Мои вопросы

  1. Есть в любом случае, чтобы уменьшить размер уловку линии?
  2. Можно ли позвонить Google API и получить изображение и сохранить его на своем сервере.
  3. Если я могу сделать второй пункт, то незаконно сохранять карты Google на моем сервере, вместо того чтобы звонить в google-сервер, чтобы получить изображение каждый раз, когда захочу.
  4. Есть ли какие-либо другие способы достижения моей задачи.

Я застрял в этой проблеме более 2 недель. Я почти все пробовал. пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.

ответ

2

Я отвечу на свой вопрос - только для части 1,

способ уменьшить размер полилинии использовать polyline encoding. Чтобы увидеть, как это работает, Вы можете использовать this interactive sample

для Node.js я использовал simplify-path и polyline модули для реализации этого.

ШАГИ

  1. кала Directions API с Lat Long данных и получить обзорную полилинию
  2. Расшифруйте уловку линии с использованием polyline модуля
  3. упростить путь, используя simplify-path модуль.
  4. наконец кодировать данные, которые вы получили от 3 шага я, используя кодирование в polyline модулы

Пример

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)); 

Таким образом, вы получите упрощенную относительно короткую уловку линии.

Кажется довольно просто: D

+0

Я был бы удивлен, если вы все еще нуждаются в этом при использовании 'overview_polyline' из маршрута, является что вы используете? Это уже упрощено. – miguev

2

Адресация вопросы 2 и 3. Вы не можете сохранить изображение на своем сервере. Это запрещено Условиями обслуживания.

Посмотрите на пункте 10.1 (а) ToS

Нет доступа к API, или Контента, кроме как через службы. Вы не будете обращаться к API (-ам) Карт или к Контенту, кроме Сервиса. Например, вы не должны получать доступ к картам или изображениям через интерфейсы или каналы (включая недокументированные интерфейсы Google), кроме API (-ов) Карт.

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

+0

В том же разделе (10.5):> Вы не будете предварительно выбирать, кэшировать, индексировать или хранить любой контент, который будет использоваться вне Сервиса, за исключением того, что вы можете хранить ограниченные количества контента исключительно для повышения эффективности вашей реализации API Карт из-за сетевой латентности ... – XstiX

3

Я отвечу вам рядный:

  1. Есть в любом случае, чтобы уменьшить размер поли линии?
    Да, Google использует закодированные полилинии и here вы можете найти процесс их создания. Вы также можете найти Interactive Polyline Encoder Utility, а также можете использовать библиотеку Google под названием Geometry и ее метод encodePath(). Найти ссылку here.
  2. Можно ли позвонить Google API и получить изображение и сохранить его на своем сервере.
    Нет, как заявил xomena

  3. Если я могу сделать вторую точку, является незаконным, чтобы сохранить карты Google в моем сервере, вместо вызова Google сервер, чтобы получить изображение каждый раз, когда я хочу ?
    Нет, как заявил xomena

  4. Есть ли другие способы я могу достичь своей задачи.
    Да, как указано в моем ответе на ваш первый вопрос, у вас есть возможность использовать Google's Geometry library

 Смежные вопросы

  • Нет связанных вопросов^_^