0

我的网页中嵌入了谷歌地图,我想使用自定义图像创建标记。这是添加标记的代码。'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. ...我使用其他图像文件的远程 URL(例如/ http://somedomain.com/images/someimage.gif

我一直在 SOF 和 Google 小组工作,但都没有运气。有任何想法吗?

2013 年 3 月 12 日添加:此站点已上线并显示此行为(最后检查)。从“标记”页面开始在您的 GPS 位置张贴标记,然后检查“地图”页面以查看您的标记是否显示。源代码在GitHub 上- 问题在 scripts/map.js 文件中。

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

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

1 回答 1

0

这不是解决方案,但我知道为什么会这样。如本文所述,除其他地方外,iOS 6 中的 Safari 似乎每次只允许每个主机一个 http 连接。

一旦我按照上面的代码创建了一个新的 EventSource,Safari 就会只打开那个新的连接(到“/pickups”)并忽略原始连接(到“/map”)。在此之后,将不会获取原始连接上的任何其他资源,包括我的树 GIF。这就解释了为什么默认的 Google 地图标记(从 google.com 获取)和来自其他主机的图像可以正常工作。

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

于 2013-03-17T19:44:15.120 回答