谷歌地图图片?

时间:2009-07-17 11:58:08

标签: image google-maps

有没有办法捕捉谷歌地图的图像? 我不能使用静态地图,因为我在地图中有自己的折线,我想在“截图”中使用它们。

基本上我希望用户导航地图,添加一些折线,当他点击“保存”时我会保存线条,坐标,缩放,但我还希望将图像作为列表中的缩略图显示。

事先提前。

6 个答案:

答案 0 :(得分:17)

Masashi Katsumata提出了一个Snapshot Control,它可以拍摄带有路径的Google地图快照并从中创建图像。

答案 1 :(得分:8)

使用Google地图服务之外的内容违反了Google Maps API使用条款,因此虽然存在创建快照的技术,但Google不允许您这样做。

要合法地实现您的预​​期功能,您需要使用静态地图(可能包含减少的内容,特别是如果用户使用最大网址长度非常小的MSIE)或小型真实谷歌地图。

我似乎没有权限添加或编辑问题的评论,所以我在这里提到至少一些地图兼容版本的MSIE中的URL限制是2083个字符,而不是8k像它在大多数其他浏览器。

答案 2 :(得分:3)

如果你想保存比谷歌地图更多的静态API允许(比如绘制到它上面的自定义叠加层太复杂/大而不能通过查询字符串),你可以使用像html2Canvas({{}这样的东西将地图容器导出到画布上。 3}}),然后将其转换为数据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才能允许该功能从谷歌下载图像。

这种方法的缺点是它可能会让您在页面上留下大约1兆字节的数据。

我尝试使用这种方法将地图导出到要下载的图像,但是在如何将这个图像传递给一个漂亮的庄园中的人时遇到了问题。您可以使用将href属性设置为您创建的dataUrl的超链接,但除非您使用像download =“filename.png”这样的HTML属性,否则无法设置文件名,这对我来说在不同的浏览器中存在问题。另一种方法是将dataUrl发布到服务器的服务器,然后按照需要进行调出,但上传大图像只是为了再次下载它似乎是一种奇怪的方法来处理它。

答案 3 :(得分:2)

您可以使用ThinkGeo Map Suite。它们支持从Google,Yahoo或MS Map服务渲染图像,同时您可以在该地图上绘制多边形线等...

使用他们的Map Suite V3是小菜一碟

答案 4 :(得分:1)

Google未在其API中提供此功能。但是,有一些脚本可以从页面中抓取此信息。以下站点有一个PHP脚本:

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

查看帖子到最后。

答案 5 :(得分:0)

如上所述,无法使用maps API,但雅虎提供了一个,使用起来非常轻松。

Yahoo: Map Image API

相关问题