Google Maps V3 自定义标记未在 IE 中显示

Posted

技术标签:

【中文标题】Google Maps V3 自定义标记未在 IE 中显示【英文标题】:Google Maps V3 Custom Markers Not Displaying In IE 【发布时间】:2011-12-27 04:45:58 【问题描述】:

我正要发布这个,然后我想通了。但无论如何我都会将它发布给其他需要它的人。吸取的教训是,如果您希望它们在 IE 中工作,则将 .ico 文件用于自定义标记图像。 (附带说明,它在 Safari 中仍然无法正常工作,但这是另一个问题。)


一段时间以来,我遇到了一个问题,即使用自定义图像创建的 Google Maps API V3 标记在 IE 或 Safari 中不显示。它在我测试过的所有其他浏览器中都能正常工作,但我们的大多数用户群仍在 IE 上,所以我需要修复这个问题。

这显然是一个已知问题(至少对 Google 而言),如此 Google 支持线程中所示: http://www.google.com/support/forum/p/maps/thread?tid=26db8fd040386548&hl=en

我想知道是否有其他人遇到过这个问题或知道解决方法?

这是我创建的一个简单测试页面的 js,它演示了这个错误:

var map;
var latLng = new google.maps.LatLng(41.342, -84.932);

$(function() 
    var myOptions = 
        zoom: 17,
        center: latLng,
        mapTypeId: google.maps.MapTypeId.HYBRID
    ;
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var newMarker = new google.maps.Marker(
        map: map,
        position: latLng,
        icon: 'images/active_point.png'
    );
);

修复:我将图像转换为 active_point.ico,这对 IE 来说效果很好。出于某种原因,IE 不喜欢我的 .png。


经过更多研究,Safari 似乎必须作为一种特殊情况处理,因为它似乎不适用于 .ico 或 .png 标记图像。我只让 .jpgs 工作,这很烦人,因为它们不支持 alpha 通道。

【问题讨论】:

【参考方案1】:

在创建自定义Marker 时设置optimized: false 解决了我遇到的.svg 图标未出现在IE 中的问题。

查看此链接了解更多详情 Google Maps SVG marker doesn't display on IE 11

【讨论】:

【参考方案2】:

另一种可能性是将属性 draggable = true 添加到标记中:

 <ui-gmap-markers coords="'self'" icon="'icon'" options=" draggable: true "> 

不知道为什么这解决了 IE 中的问题,check this

【讨论】:

【参考方案3】:

IE 必须需要特定的 PNG 文件。从 google api 的示例 apis.google.com 更新我的动态图标源修复了它:

 // new source of icons
 var iconnumber = 5;
 var imgsrc = "http://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=" + iconnumber + "|00FF00|000000&.png";
 var img = new google.maps.MarkerImage(imgsrc);

【讨论】:

【参考方案4】:

添加元标记

<meta http-equiv="X-UA-Compatible" content="IE=9"/>

&此代码到 Google Api 代码

//google map custom marker icon - .png fallback for IE
var is_internetExplorer11 = navigator.userAgent.toLowerCase().indexOf('trident') > -1;

var marker_url = (is_internetExplorer11) ? 'IE-map-icon-location.png' : 'map-icon-location.png ';

【讨论】:

【参考方案5】:

另一种选择是使用MarkerImage 类。

icon: new google.maps.MarkerImage('images/active_point.png');

【讨论】:

好主意。除了它没有任何区别。我试过了。

以上是关于Google Maps V3 自定义标记未在 IE 中显示的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Maps V3 中创建编号的地图标记?

是否可以在 Google Maps API v3 上编写自定义文本?

是否可以在Google Maps API v3上编写自定义文字?

如何自定义附近地点搜索返回的结果,Google Maps JS API V3

Google Maps Api v3:如何更改方向(设置)面板中的默认航点标记?

谷歌地图标记未在 Chrome 中显示