响应 Local Context 事件

如果您的布局应在显示地点详情视图时更改,请使用事件监听器 placedetailsviewshowstartplacedetailsviewhidestart。在下面的示例中,有三个由自定义标记表示的地区。当用户点击其中一个地区标记时,系统会打开一个描述该地区的 InfoWindow。如果用户在 InfoWindow 处于打开状态时点击某个地图注点,InfoWindow 将在地图注点的地点详情视图显示时关闭,并在用户关闭地点详情视图时重新打开。

了解代码

管理包含地点详情视图事件的 InfoWindow

如果您在地点详情视图处于打开状态时调用 InfoWindow.close(),打开的 InfoWindow 会从 DOM 中移除。为了创建“重新打开”InfoWindow 的效果,您必须将 InfoWindow 的属性存储在 DOM 之外的变量中,以便在希望 InfoWindow 再次显示时重新创建它。建议在创建 InfoWindow 时将信息保存到某个存储空间变量。

let infoStorage;

function createInfoWindow(district, marker) {
  // Build the content of the InfoWindow
  let contentDiv = document.createElement('div');
  ...

  // Create and open a new InfoWindow
  infoWindow = new google.maps.InfoWindow();
  infoWindow.setContent(contentDiv);
  infoWindow.open(map, marker);

  // Store key properties of the InfoWindow for future restoration
  infoStorage = {
    'district': district,
    'marker': marker,
  };
}

稍后,当地点详情视图关闭时,您可以调用同一 InfoWindow 创建函数来重新创建最后打开的 InfoWindow

TypeScript

localContextMapView.addListener("placedetailsviewhidestart", () => {
  if (infoStorage) {
    createInfoWindow(infoStorage.district, infoStorage.marker);
  }
});

JavaScript

localContextMapView.addListener("placedetailsviewhidestart", () => {
  if (infoStorage) {
    createInfoWindow(infoStorage.district, infoStorage.marker);
  }
});

更新路线出发地

由于此地图上有多个地区标记可供用户选择,因此我们会在标记的点击监听器中使用下面这几行代码将 directionsOptions 的出发地更新为最终点击的地区。这表明即使在初始化 localContextMapView 之后,也可以更新 directionsOptions

试用示例