【问题标题】:SVG as Icon of Marker not working in IESVG 作为标记的图标在 IE 中不起作用
【发布时间】:2016-08-04 09:16:37
【问题描述】:

希望有人能帮助我:

我的情况:

我目前正在使用谷歌地图,我做了一些标记来代表一次旅行。现在这些标记的图标可以很容易地更改为您选择的图像并定义如下:

var marker = new google.maps.Marker({
    label: name[0],
    title: name,
    draggable: true,
    position: { lat: lat, lng: lng },
    icon: this._imgNormal,
    map: _map,
    customInfo: nearHotel.ID,
    descr: nearHotel.descr
});

但现在我需要将这些图标交换为 SVG 而不是 PNG。

我的尝试

首先我会解释我不使用这种简单方法的原因,然后在标记中使用它:

var icon = {
    path: "M-20,0a20,20 0 1,0 40,0a20,20 0 1,0 -40,0",
    fillColor: '#FF0000',
    fillOpacity: .6,
    anchor: new google.maps.Point(0,0),
    strokeWeight: 0,
    scale: 1
}

这是因为我想最终制作更复杂的 SVG,据我所知,这种方法不允许我在多个矩形内制作花。

我做了一些研究,并在这个网站上找到了一种方法:
Create Google Maps Markers with Inline SVG

我的问题和疑问

在 Chrome 和 Firefox 中这可以工作,但在 IE 中不行...我开始查找为什么它不能工作,它说它必须对 encodeURIComponent 用户做一些事情,这在 IE 中不会以同样的方式工作这可能就是它不受支持的原因。

有谁知道是否有某种方法可以使这种方法在 IE 中也能正常工作? 或者是否有一种完全不同的方式来使用适用于任何浏览器的复杂 SVG?

很高兴听到你的回答,在此先谢谢你

我在 Illustrator 中创建的 SVG 示例

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 width="85.04px" height="85.04px" viewBox="0 0 85.04 85.04" enable-background="new 0 0 85.04 85.04" xml:space="preserve">
<g>
	<g>
		<circle fill="#706F6F" cx="42.466" cy="42.143" r="20.582"/>
	</g>
	<g>
		<g>
			<circle fill="#FFFFFF" cx="42.466" cy="42.143" r="18.5"/>
		</g>
		<circle fill="#CE1222" cx="42.466" cy="42.143" r="13.5"/>
	</g>
</g>
</svg>

【问题讨论】:

  • 这是 IE 的常见问题:stackoverflow.com/questions/8926285/svg-browser-support。我有一个类似的目的,我编写了一个函数来检测它是否是 IE,然后将图像作为 .png
  • 我明白了,所以您将其用作解决方法。我仍然会等待,看看是否还有其他可能性,但感谢@IntercoolerTurbo 的好主意,我可能会考虑这样做。
  • caniuse.com/#search=svg - 您想要/需要针对哪个版本的 IE? IE 9 及更高版本应该没问题。 IE 8 占全球浏览器使用量的 0.77%……更不用说早期版本了。
  • 我可以在 IE9 中完美运行这个示例:jsfiddle.net/upsidown/eLcNq
  • @MrUpsidown 我在我的问题中说我提供的链接中的示例在 IE 中不起作用,而不是第一个代码示例不起作用。为图标添加路径效果很好,但是有没有办法用我正在使用的 SVG 来做到这一点?我编辑了我的问题并添加了一个带有我使用的 SVG 示例的 sn-p。是否可以组合它包含的不同路径以使其也可以作为图标工作?感谢您的帮助和努力

标签: javascript css google-maps svg google-maps-api-3


【解决方案1】:

我在 SVG 文件上尝试了你的代码,它在 Chrome 和 IE 上也能正常工作,无论如何我在 IE 上遇到了 SVG 的一些问题,我意识到我必须用像素分配宽度和高度。

例如你写的:

width="35"
height="35"

但对于 IE,你必须这样写:

width="35px"
height="35px"

这是基于我对 SVG 的了解以及将它们与 IE 一起使用,希望对您有所帮助:)

【讨论】:

  • 我希望我可以输入一个单词作为评论。在这种情况下,它将是:否。
  • @AhmedAlaa 我不认为这是答案,但我感谢你的努力。谢谢
  • 我认为我没有正确理解您的问题,对此感到抱歉,我希望您找到了您正在寻找的答案:)
  • 很抱歉,您能否指出您对我的问题不理解的部分?这样我就可以改进它。感谢您的反馈:)
  • 我通常使用 illustrator 绘制 SVG 图标并将它们导出到 SVG 以便能够在我的响应式网站或移动应用程序中使用它们,并且我意识到所有动画或与 SVG 相关的任何东西都可以在所有浏览器中正常工作除了 IE,我搜索了很多原因,我发现 IE 无法理解数字而不提到统一,就像我所说的关于宽度和高度的内容......但似乎你的目标是我没有的其他东西不懂:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 2023-03-31
  • 2020-02-12
  • 2019-03-31
  • 2014-08-09
  • 1970-01-01
  • 2020-01-06
相关资源
最近更新 更多