0

Web ページに 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. ...他の画像ファイルへのリモート 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は、ホストごとに一度に1つのhttp接続のみを許可しているように見えます。

上記のコードに示すように、新しいEventSourceを作成するとすぐに、Safariはその新しい接続('/ pickups'への)のみを開いたままにし、元の接続('/ map'への)を無視します。それ以降、ツリーGIFを含む、元の接続上の他のリソースはフェッチされません。これが、デフォルトのGoogleマップマーカー(google.comから取得)と他のホストからの画像が正常に機能する理由を説明しています。

より良い解決策が見つかるまで、EventSourceの代わりにSafariiOS6クライアントのポーリングを使用します。

于 2013-03-17T19:44:15.120 に答える