谷歌地图MarkerImage与本地网址不会显示在Safari移动iOS 6中

时间:2013-03-04 23:07:26

标签: javascript html5 google-maps google-maps-api-3 mobile-safari

我的网页中嵌入了Google地图,我想使用自定义图片创建标记。这是添加标记的代码。 '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
    });
};

这在IE 8,Chrome 25,Firefox 19和Safari 5(桌面)中运行良好 - 创建标记并显示tree.gif图像。但是,这在iOS 6(iPad和iPhone)上的Safari移动设备中不起作用。

如果出现以下情况,这适用于Safari移动设备:

  1. ...我删除自定义图标 - 显示默认的Google地图标记图标(红色图钉)

  2. ...我使用远程网址到其他图像文件(例如/ http://somedomain.com/images/someimage.gif

  3. 我一直都是SOF和谷歌团体,没有运气。有什么想法吗?

    ADDED 3/12/13:This site正在播放并展示此行为(最后检查)。从“标记”页面开始,在GPS位置发布标记,然后选中“地图”页面,查看标记是否显示。源代码在GitHub上 - 问题在scripts / map.js文件中。

    2013年3月15日增加:缩小范围。我的页面还使用HTML5服务器发送的事件。仅当EventSource连接打开时,才会出现上述行为。但是,如果我注释掉这一行,标记会按预期显示(链接到前一段中的代码):

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

1 个答案:

答案 0 :(得分:0)

这不是解决方案,但我弄清楚为什么会这样。如this post中所述,在其他地方,iOS 6中的Safari似乎每个主机一次只允许一个http连接。

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

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