【发布时间】:2010-11-06 12:33:00
【问题描述】:
我想在 Google 地图上添加叠加图像。该图像是我生成的 SVG 文件(带有 SVGFig 的 Python)。
我正在使用以下代码:
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(48.8, 2.4), 12);
// ground overlay
var boundaries = new GLatLngBounds(new GLatLng(48.283188032632829, 1.9675270369830129), new GLatLng(49.187215000000002, 2.7771877478303999));
var oldmap = new GGroundOverlay("test.svg", boundaries);
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.addOverlay(oldmap);
}
令人惊讶的是,它适用于 Safari 4,但不适用于 Firefox(对于 Safari 3,背景不透明)。
有人知道如何覆盖 SVG 吗?
PS1:我读过一些像this或swa.ethz.ch/googlemaps的源代码的作品,但似乎他们必须使用JavaScript代码来解析SVG并一一添加所有元素(但我不明白所有的来源......)。
PS2:SVG 由不同的填充路径和圆圈组成,具有透明度。 如果没有解决方案来覆盖我的 SVG,我可以使用 2 个替代解决方案:
- 光栅化 SVG
- 在 GPolygons 中转换路径和圆
但我不太喜欢第一种解决方案,因为位图的质量很差,而且使用抗锯齿生成它需要时间。
对于第二种解决方案,圆弧、椭圆和圆必须分解为小折线。为了获得良好的结果,其中很多都是必要的。但是我有大约 3000 个圆弧和圆要画,所以...
【问题讨论】:
-
真是个好问题。我的直觉是,您的第二种方法将无法执行,但在没有确认 gmaps 如何使用该数量的折线执行的情况下犹豫回答。我期待着看看这是怎么回事。
-
GGroundOverly 会不会使用 CSS 背景图片? FF 不处理(目前,3.5 将)SVG 作为背景。
-
我刚刚尝试使用 FF 3.5,但它也不起作用。事实上,当我查看下载的媒体(工具/页面信息/媒体)时,我的 SVG 根本没有加载...
-
GGroundOverlays 不使用 CSS 背景图像。只是普通的img。我不知道为什么它们不起作用。
-
你可以(尝试)看到结果here
标签: javascript google-maps svg