我明白这里的问题是什么:让我们说世界地图以通常的方式是相当大的负担。如果我做对了,您想要的是拥有一张领土地图图像并放置悬停效果,使悬停区域与国家边界完全匹配。SVG 可以用于地图(绘图部分已经完成),但问题是如何使用 SVG 地图坐标生成HTML 区域地图。有一个解决方案(我已经尝试过了,至少在提供的演示中看起来不错),它使用 PHP 将 SVG 转换为 Raphael(生成坐标)。但是你再次需要 raphael.js ......如果你改变主意:https ://github.com/atirip/svg2raphael 。而且,如果您不熟悉 Raphael,则需要一段时间来适应它,文档对我来说并不是那么好。
编辑:我可以确认从 SVG->rapahel.js 的翻译可以工作,但 SVG 文件需要一些调整。对于我在 svg2raphael 中提供的示例 SVG 中看到的,这些文件是使用 Adobe Illustrator 制作的。我尝试过使用 Inkscape 的 SVG(普通),但它不能正常工作,但我可以设法解决这些问题,例如:
- svg2raphael 不会翻译 Inkscape 生成的
<path style="fill:#ff0000" ...></path>
(将设置 fill="none"!!! 所以结果是不可见的,但会正确翻译<path fill="#ff0000" ...></path>
似乎它会忽略 style="" 中的所有内容。
- svg2raphael 误读了 Inkscape SVG 的对齐方式,因此您需要在 Inkscape 中移动插图或使用文本编辑器编辑 SVG 文件并将 M 值更改为 M0,0。
- svg2raphael 可以翻译多个 svg 元素,但查看 Inkscape 生成的用于对齐插图组的主标签,有时整个插图会远离渲染区域而你什么也看不到。希望这可以帮助!
编辑 2:您可以使用 Inkscape 的 style="" 创建适用于 SVG 的 CSS 规则,这样可以很好地保持 SVG/Raphael 之外的风格!