Как отвечать на события локального контекста

Если макет должен меняться при отображении сведений о месте, используйте прослушиватели событий placedetailsviewshowstart и placedetailsviewhidestart. В примере ниже есть три района, обозначенных специальными маркерами. Когда пользователь нажимает на один из этих маркеров, появляется 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 можно обновить в зависимости от последнего выбранного района с помощью приведенных ниже строк кода в прослушивателе кликов для маркера. В этом коде показано, как можно обновить directionsOptions даже после инициализации localContextMapView.

Примеры кода