0

我决定尝试在 Google I/O 2013 上宣布的新视觉刷新,因为获取新底图/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 时,它右上角的关闭按钮似乎不再响应。有没有其他人观察到这一点?我试图找出这是我的代码或谷歌的错误。

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

http://jsfiddle.net/vG3WE/1

4

1 回答 1

1

我注意到在某些 Apple 设备上也有同样的效果。认为这是一个非常肮脏的 hack,但如果你不想等到这个 bug 被修复,你可以自己实现 close 事件,以便它也可以在移动设备上工作:

首先,您需要为信息窗口内容定义一个 ID(稍后您将需要它)

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

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

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 回答