问题描述
当在 Google Maps infoWindow 中使用 infoWindow.open 方法时,有人可以提供一个简单的示例,说明在 Javascript 中使用的“shouldFocus”布尔选项吗?
InfoWindowOpenOptions interface
...
infoWindow.open(map,marker); // 打开 infoWindow 但不要改变焦点 - 如何?
...
解决方法
调用 open 时,如果要指定选项对象,则不需要提供地图。它将在 MVCObject(标记等)所在的地图上呈现窗口。
infoWindow.open({
anchor: marker,shouldFocus:false
});
这将阻止 InfoWindow 获得焦点。
,编辑 2
我已经用 3.43 版(将在 8 月中旬删除)重新测试了它,它仍然有效。所以恕我直言,这是在版本 3.44 中引入的错误,同时还引入了属性 shouldFocus
。
目前有一些问题描述了该问题: https://issuetracker.google.com/issues/190075886 https://issuetracker.google.com/issues/190637181
编辑
我刚刚创建了一个小提琴,其中给定的方法在几种情况下不起作用。我无法重现为什么会发生这种情况。我创建了一个小提琴,它在 2.5 秒和 5 秒后打开给定的 InfoWindow
。
案例 1:
2.5 秒后,InfoWindow
打开,但未聚焦。如果 InfoWindow
在打开后立即关闭,则它在 5 秒后没有被聚焦。
案例 1 小提琴链接:https://jsfiddle.net/ywnj6bc4/5/
情况 2:
如果 2.5 秒后 InfoWindow
打开但未关闭,则 InfoWindow
将在 5 秒后聚焦。
案例 2 小提琴链接:https://jsfiddle.net/ywnj6bc4/4/
我仍在为我的案例寻找合适的解决方法,因为我还没有发现究竟是什么导致了这个 - 在我看来 - 错误的结果。
原答案
我刚刚遇到了同样的问题。主要是因为我使用的 InfoWindow
没有关联的标记。
我的解决方法是创建 InfoWindow
,然后通过添加“假”标记作为锚选项来打开它。
如文档中所述,可能还有其他方法可以实现这一点:
如果锚不为空,则将此信息窗口定位在锚的顶部中心,而不是给定的经纬度。 InfoWindow 将在与锚点相同的地图或街景上呈现。
请参阅此代码示例。
var map = new google.maps.Map({some: options})
let infoWindow = new google.maps.InfoWindow({
content: 'Info Window Content...',position: {lat: 47.5,lng: 8.5},});
infoWindow.open({
shouldFocus: false,anchor: new google.maps.Marker({
anchor: infoWindow.position,// same position as infoWindow
map: map
})
});