Я провел много исследований и нашел несколько "решений", таких как static maps API и просто отправить ссылку на Gmap. Однако действительно ли нет способа отправить кому-то карту Google?
Невозможно ли внедрить Google Map в HTML-письмо?
Ответ 1
Ваши собственные исследования показывают, что большинство почтовых клиентов не поддерживают iFrames, так что вы думаете, что можно сделать?
Это нарочно, кстати. iFrames и JavaScript - это угрозы безопасности, с которыми почтовые службы не хотят иметь дело.
Лучше всего получить статичное изображение карты и вставить его в виде изображения в электронное письмо в формате HTML. Поместите гиперссылку на "полную" карту в Google Maps.
Чтобы сделать это вручную в Gmail:
- Перейдите на страницу http://staticmapmaker.com/google/ или аналогичную.
- Введите местоположение
- Скопируйте изображение карты в буфер обмена и вставьте его в электронное письмо.
- Скопируйте
href
якоря в разделе "Карта со ссылкой на Google Maps" - Выделите все изображение (наведите курсор на изображение справа и нажмите shift + left arrow
- Нажмите ctrl + k, чтобы создать гиперссылку на изображение.
- Вставьте URL из шага 4 в поле веб-адреса
Ответ 2
Вы можете создать статическую карту изображения и отправить ее по электронной почте, сделав ее в Perl: https://metacpan.org/pod/Geo::Google::StaticMaps::V2
или просто напрямую через Google: https://developers.google.com/maps/documentation/static-maps/
Это должно быть что-то вроде этого в HTML-части сообщения электронной почты:
<img src="http://maps.googleapis.com/maps/api/staticmap?size=800x600&maptype=hybrid&scale=2&format=png8&sensor=false&path=geodesic%3Atrue%7C-6.9325%2C+37.3916666666667%7C-6.9325%2C+37.3933333333333%7C-6.93388888888889%2C+37.3933333333333%7C-6.93388888888889%2C+37.3916666666667%7C-6.9325%2C+37.3916666666667&zoom=10" width="800" height="600"/>
Я только что попробовал, и это работает как шарм.
Пример кода:
#!/usr/bin/perl
use strict;
use warnings;
use feature ':5.10';
use utf8;
use Geo::Converter::dms2dd qw { dms2dd };
use Geo::Google::StaticMaps::V2;
my $map = Geo::Google::StaticMaps::V2->new(
width => 800,
height => 600,
sensor => 0,
scale => 2,
zoom => 16,
format => "png8",
type => "hybrid"
);
binmode(STDOUT, ":encoding(UTF-8)");
binmode(STDIN, ":encoding(UTF-8)");
$| = 1;
my %c;
$c{1} = [ '-6 55 57.00', '37 23 30.00' ];
$c{2} = [ '-6 55 57.00', '37 23 36.00' ];
$c{3} = [ '-6 56 02.00', '37 23 36.00' ];
$c{4} = [ '-6 56 02.00', '37 23 30.00' ];
$c{5} = [ '-6 55 57.00', '37 23 30.00' ];
my @location;
foreach my $key (sort keys %c) {
$c{$key}[0] = dms2dd ({value => $c{$key}[0], is_lat => 1});
$c{$key}[1] = dms2dd ({value => $c{$key}[1], is_lon => 1});
push(@location, "$c{$key}[0], $c{$key}[1]");
}
my $path = $map->path(locations=>[ @location ], geodesic=>1);
print $map->url;
$map->image;
$map->save("/home/data1/protected/map.png");
Ответ 3
Вы можете отправить ссылку, содержащую параметры карты (Lat, Lgt и т.д.), По электронной почте на HTML-страницу вашего сервера, которая принимает параметры для карты с REST apis и отображает полную карту в браузере. В противном случае единственный выбор - использовать концепцию статической карты. Можно использовать и то и другое. Отправьте изображение статической карты, а ниже ссылку на страницу HTML, которая принимает параметры, подготавливает карту и отображает реальную карту, если пользователь этого пожелает.