0

Google I/O 2013 で発表された新しい Visual Refresh を試してみることにしました。新しいベースマップ/UI を取得するために必要なのは、単一のプロパティ/クエリ文字列だけだからです。

JavaScript API

function initializeMap() {
    var myOptions = {
        zoom: 13,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    google.maps.visualRefresh = true;
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

- また -

静的マップ API

https://maps.googleapis.com/maps/api/staticmap?center=1600%20Amphitheatre%20Parkway%20Mountain%20View,%20CA%2094043&size=400x400&sensor=false

それはうまく機能し、私のマップは新しいベースマップ タイルと UI を使用するようになりました。

ただし、この変更以降、モバイル デバイスで (Javascript API を使用して) InfoWindow を開くと、右上隅にある [閉じる] ボタンが応答しなくなったようです。他の誰かがこれを観察しましたか?それが私のコードのバグなのか、それとも Google のバグなのかを調べようとしています。

更新: これは、テストに使用している基本的な Fiddle です。Chrome、IE、Firefox では動作しますが、モバイル デバイスでは動作しません (これまでのところ、Android のみを試すことができました)。

http://jsfiddle.net/vG3WE/1

4

1 に答える 1

1

一部の Apple デバイスで同じ効果があることに気付きました。これは非常に汚いハックと考えてください。ただし、このバグが修正されるまで待ちたくない場合は、close イベントを自分で実装して、モバイル デバイスでも動作するようにすることができます。

まず、情報ウィンドウのコンテンツの ID を定義する必要があります (後で必要になります)。

var contentString = '<div id="infowindowContent">You should be able to close me</div>';     
var infowindow = new google.maps.InfoWindow({
  content: contentString
});

次に、この情報ウィンドウの domready イベントのリスナーをアタッチする必要があります。このイベントが発生した場合、情報ウィンドウが DOM にアタッチされていることがわかり、次のハックの実装を開始できます。

google.maps.event.addListener(infowindow, 'domready', function() {
  var infowindowCloseButton = $($($("#infowindowContent").parents()[2]).children()[0]);
  infowindowCloseButton.click(function(){
    infowindow.close();
  });
});

行うことは非常に単純です。情報ウィンドウの閉じるボタンに移動し、mouseclick イベントをアタッチしてこの情報ウィンドウを閉じるだけです。

小さな例をまとめました:

http://chatmap.eu/playground/closeInfoWindows.html

私が言ったように:それは非常に汚いですが、私にとってはうまくいきました。

于 2013-05-31T17:07:55.850 に答える