谷歌地图MarkerImage与本地url不显示在Safari移动iOS 6

Google maps MarkerImage with local url won't display in Safari mobile iOS 6

本文关键字:Safari 移动 iOS 显示 MarkerImage url 谷歌地图      更新时间:2023-09-26

我有一个谷歌地图嵌入在我的网页,我想使用自定义图像创建一个标记。下面是添加标记的代码。'map'是代表Google地图对象的变量。

function addMarker(location) {
    var image = new google.maps.MarkerImage("tree.gif", null, null, null, new google.maps.Size(16, 24));
    marker = new google.maps.Marker({
        position: location,
        map: map,
        icon: image
    });
};

这在ie8, Chrome 25, Firefox 19和Safari 5(桌面)中工作良好-创建标记并显示tree.gif图像。但是,这在iOS 6 (iPad和iPhone)的Safari mobile中不起作用。

如果:

  1. …我删除了自定义图标-默认的谷歌地图标记图标(红色图钉)出现

  2. …我使用远程url到一些其他图像文件(例如/http://somedomain.com/images/someimage.gif)

我逛遍了所有的SOF和Google群组,都没有运气。什么好主意吗?

添加3/12/13:这个网站是活的,并显示此行为(最后检查)。从"标记"页面开始,在你的GPS位置上张贴一个标记,然后检查"地图"页面,看看你的标记是否出现了。源代码在GitHub上-问题在scripts/map.js文件中。

添加3/15/13:缩小范围。我的页面也使用HTML5服务器发送的事件。上述行为仅在EventSource连接打开时发生。但是,如果我注释掉这一行,标记就会像预期的那样出现(链接到上一段中的代码):

var source = new EventSource('../pickups');

这不是解决方案,但我弄清楚了为什么会发生这种情况。正如这篇文章所描述的,在其他地方,iOS 6中的Safari似乎只允许每个主机同时进行一个http连接。

一旦我创建了一个新的EventSource,如上面的代码所示,Safari只保持新连接(到'/pickups')打开,而忽略原始连接(到'/map')。在此之后,原始连接上的任何其他资源(包括我的树GIF)都不会被获取。这就解释了为什么默认的谷歌地图标记(从google.com获取)和其他主机的图像工作良好。

在我找到更好的解决方案之前,我将在Safari iOS 6客户端使用轮询而不是EventSource。