我希望这个问题不会令人困惑或太复杂。但我们开始了:我正在创建一个自定义谷歌地图,它使用“google.map.Polygon”方法将美国的一些州呈现为多边形叠加层。一切似乎都可以在所有浏览器中工作,如下图所示,
当我说“所有浏览器”时,它们是 Chrome、Firefox、Safari 和 Opera。但是当涉及到 IE (9-10) 时,Polygon 形状似乎会减半并且还会缩小,如下所示:
就像我之前说的,我使用的是谷歌多边形方法:
var obj = new google.maps.Polygon({
paths: coords,
strokeColor: sColor,
strokeOpacity: sOpacity,
strokeWeight: sWeight,
fillColor: fColor,
fillOpacity: fOpacity,
lat:cLat,
lng:cLng,
north_bound:cNorthBound,
south_bound:cSouthBound,
name:name
});
形状坐标点来自这样的 XML 文件://我只是放置代码以更好地了解整个事物是如何组合在一起的
<state name="Louisiana" strokeColor="#D6D1CB" strokeOpacity="1" strokeWeight="2" fillColor="#004E98" fillOpacity="1" lat="31.2448234" lng="-92.1450245" north_bound="33.019544,-88.8162401" south_bound="28.9254296,-94.043352">
<point lat="33.0225" lng="-94.0430"/>
<point lat="33.0179" lng="-93.0048"/>
<point lat="33.0087" lng="-91.1646"/>
<point lat="32.9269" lng="-91.2209"/>
<point lat="32.8773" lng="-91.1220"/>
..... etc
问题不在于传递数据或创建形状,而在于它在 IE 9&10 中呈现的方式。我已经用谷歌搜索并尝试了几天来解决这个问题的几种替代方法,但它们都没有奏效,这是我迄今为止尝试过的:
- 使用IE兼容模式()
- 使用 IE 向后兼容 ()
- 使用前缀以防出现 css/html5 问题(使用 prefixer.js)
- 使用 excanvas 实现 IE 兼容性
- 使用现代化器(但它表明 IE 支持画布,但不知道支持的范围有多大。
- 使用 html5shiv,以防 IE 遇到 html5 元素问题
- 将所有 css 更改为显示为块(包括画布标签)
- 检查 Firebug 和 IE 工具控制台中的错误,但未检测到错误。
- 检查所有功能是否有错误,但未检测到错误
如果我点击 IE 的兼容性按钮
代码更改为:
至:
这是旧浏览器的兼容性视图,所以我认为谷歌地图呈现不同(没有画布),然后它正确显示多边形,但会阻止页面中的 html5 元素和 css 的其余部分。除此之外,这是由用户控制的,而不是由站点控制的。
就像你在上图中看到的那样。
所以我的问题(可能的解决方案/想法)是:
- 有没有办法强制谷歌地图在没有画布的情况下仅用于 IE 浏览器?
- 这与我不知道的任何 css 属性有关吗?(它不使用 css 来创建状态形状,但以防万一)
- 是否有任何 JS 可以解决此类问题?
- 关于谷歌地图和 IE,我有什么遗漏吗?
- 大家还有什么想法吗?
提前感谢您的任何输入/帮助:)