Подтвердить что ты не робот

Изображение в Google Картах?

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

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

Tks заранее.

4b9b3361

Ответ 2

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

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

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

Ответ 3

Если вы хотите сохранить больше, чем google maps, то статический API позволяет (например, настраиваемые наложения, наложенные на него слишком сложные/большие для прохождения через последовательность запросов), вы можете экспортировать контейнер карты в холст, используя что-то вроде 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.

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

Yahoo: API изображений карт