切换到新的Visual Refresh后无法关闭InfoWindow

时间:2013-05-16 21:05:55

标签: android google-maps google-maps-api-3 infowindow googleio

我决定尝试在Google I / O 2013上宣布新的Visual Refresh,因为获取新的basemaps / 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。

然而,自从更改后,当我在移动设备上打开InfoWindow时(使用Javascript API),它右上角的关闭按钮似乎不再响应。有没有人观察过这个?我试图找出我的代码或Google的错误。

更新 这是我用来测试的基本小提琴。适用于Chrome,IE和& Firefox但不在移动设备上(到目前为止只能尝试android)

http://jsfiddle.net/vG3WE/1

1 个答案:

答案 0 :(得分: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
});

然后你需要为这个infowindow的domready-event附加一个监听器。如果此事件被触发,您知道信息窗口已附加到DOM,您可以开始实现以下hack:

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

我们做的很简单:我们只需导航到infowindow的关闭按钮,然后附上一个鼠标点击事件来关闭这个信息窗口。

我把一个小例子放在一起:

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

正如我所说:它非常脏,但它对我有用。