Google Maps изображение? - PullRequest
       14

Google Maps изображение?

25 голосов
/ 17 июля 2009

Есть ли способ сделать снимок карты Google? Я не могу использовать статическую карту, потому что у меня есть собственные полилинии на карте, и я хочу их на «скриншоте».

Обычно я хочу, чтобы пользователь перемещался по карте, добавлял несколько полилиний, и когда он нажимал кнопку Сохранить, я сохранял линии, координаты, масштаб, но мне также хотелось бы, чтобы изображение отображалось в виде эскиза в списках.

Ткс заранее.

Ответы [ 6 ]

17 голосов
/ 22 сентября 2009

Масаси Кацумата разработал Snapshot Control , который делает снимок Google Maps с указанием пути и создает из него изображение.

8 голосов
/ 22 сентября 2009

Использование содержимого Карт Google за пределами Сервиса является нарушением Условий использования API Карт Google, поэтому, хотя существуют способы создания снимков, Google не дает вам на это разрешения.

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

У меня пока нет прав добавлять или редактировать комментарии к вопросу, поэтому я упомяну здесь, что ограничение по крайней мере в некоторых версиях MSIE, совместимых с Картами, составляет 2083 символа, а не 8 Кб, как в большинство других браузеров.

3 голосов
/ 16 октября 2013

Если вы хотите сохранить больше, чем позволяет статический API карт Google Maps (например, пользовательские наложения, нарисованные на нем, слишком сложные / большие, чтобы проходить через строку запроса), вы можете экспортировать контейнер карты на холст, используя что-то вроде html2Canvas (http://html2canvas.hertzen.com/),, затем преобразуйте его в URL-адрес данных и делайте с ним, как хотите.

function saveMapToDataUrl() {

    var element = $("#mapDiv");

    html2canvas(element, {
        useCORS: true,
        onrendered: function(canvas) {
            var dataUrl= canvas.toDataURL("image/png");

            // DO SOMETHING WITH THE DATAURL
            // Eg. write it to the page
            document.write('<img src="' + dataUrl + '"/>');
        }
    });
}

Полагаю, вам нужно установить для параметра useCORS значение true, чтобы функция могла загружать изображения из Google.

Недостатком этого подхода является то, что он может оставить на вашей странице около мегабайта данных.

Я пытался использовать этот подход, чтобы экспортировать карту в изображение для загрузки, но столкнулся с проблемами в том, как передать это изображение человеку в хорошей усадьбе. Вы можете использовать гиперссылку, у которой для атрибута href установлено значение dataUrl, которое вы создали, но имя файла не может быть установлено, если вы не используете атрибуты HTML, такие как download = "filename.png", что проблематично для меня в разных браузерах. Другой подход заключается в том, чтобы отправить dataUrl на сервер, чтобы сервер затем выдал его, как ему нужно, но загрузка большого изображения только для его повторной загрузки кажется странным способом справиться с этим.

2 голосов
/ 06 августа 2009

Вы можете использовать ThinkGeo Map Suite. Они поддерживают рендеринг изображений из сервисов Google, Yahoo или MS Map, в то время как вы можете рисовать линии и т. Д. На этой карте ...

Работа с их Map Suite V3 - это просто пирог

1 голос
/ 06 августа 2009

Google не предоставляет эту функцию со своим API. Однако есть несколько сценариев для удаления этой информации со страницы. На следующем сайте есть PHP-скрипт, который это делает:

http://groups.google.co.uk/group/Google-Maps-API/browse_frm/thread/e9696444518ac079?hl=en

Смотрите сообщения в конце.

0 голосов
/ 08 августа 2009

Невозможно сделать это с API-интерфейсом карт, как упоминалось выше, но Yahoo предлагает его, и использовать его довольно просто.

Yahoo: API Image Map

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...