【问题标题】:Capture google map as image?将谷歌地图捕获为图像?
【发布时间】:2013-10-18 22:17:32
【问题描述】:

我在创建静态地图时遇到了 2048 大小的限制。我正在绘制超过 100,000 个坐标,然后我有一个按钮可以在屏幕上查看地图时对地图进行屏幕截图,目前,我正在这样做:

function plotMapPoints(locations) {
    var marker, i, pos;
    var image = "http://maps.google.com/maps/api/staticmap?sensor=false&center=0,0&zoom=" + map.getZoom() + "&size=512x512";

    for (i = 0; i < locations.length; i++) {
        pos = new google.maps.LatLng(locations[i][0], locations[i][1]);
        marker = new google.maps.Marker({
            position: pos,
            map: map
        });
        image += "&markers=" + pos.lat() + ',' + pos.lng();
    }
    console.log(image);
}

当我单击控制台中的链接时,它的格式似乎很好,但是,我从 Google 收到了这个:

413. That’s an error.

Your client issued a request that was too large. That’s all we know.

还有其他人知道将地图捕获为图像的方法吗?我也尝试过 html2canvas,但是我遇到了跨源画布问题。

任何帮助都会很棒。

【问题讨论】:

  • 我想知道您是否可以根据此答案将地图所在的 div 捕获为图像 - stackoverflow.com/questions/13720815/capture-a-div-as-an-image
  • 我试过了,我仍然收到跨浏览器来源警告
  • 您是否尝试通过从 Google 下载地图工件来创建自己的 GeoServer?
  • 我不知道地理服务器是什么,我想做的基本上就是截图,一张我制作的带有图钉的地图

标签: javascript jquery google-maps google-maps-api-3 maps


【解决方案1】:

如果您使用 Selenium(或 PhantomJS,如果您想在不启动 Web 浏览器的情况下使用它),您可以像 this link suggests 一样进行操作。您要截屏的元素的 XPath 是://*[@id="map"]

【讨论】:

  • 不幸的是,我没有使用其中任何一个,这是一个本地项目,它必须是独立的(把这个给朋友),所以我不希望他安装任何东西,如果需要。
  • 我知道你可能会更容易地破解一些东西。我的建议当然可以独立运行。首先,使用 Maven 运行它,然后使用本地包含的库运行它。 Maven 运行示例为: mvn.bat exec:java -Dexec.mainClass="com.test.foo.Main" -Dexec.args="arg1 arg2..."
  • 你在 Maven 上失去了我,哈哈,对不起,对于本应如此简单的事情来说有点太多了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多