Responder a eventos de Contexto local

Se você tem um layout que precisa mudar quando a visualização de detalhes do lugar é mostrada, use os listeners de eventos placedetailsviewshowstart e placedetailsviewhidestart. No exemplo abaixo, há três distritos indicados por marcadores personalizados. Quando o usuário clica em um desses marcadores de distrito, uma InfoWindow é aberta com a descrição. Se um usuário clicar em um PDI quando uma InfoWindow estiver aberta, a InfoWindow vai ser fechada quando a visualização de detalhes do lugar desse PDI aparecer e ser reaberta quando o usuário fechar a visualização.

Entender o código

Gerenciar uma InfoWindow com eventos de visualização de detalhes do lugar

Quando a visualização de detalhes do lugar é aberta e você chama InfoWindow.close(), a InfoWindow aberta é removida do DOM. Para criar o efeito de "reabrir" a InfoWindow, é necessário armazenar as propriedades da InfoWindow em uma variável fora do DOM com o objetivo de recriar a InfoWindow quando quiser mostrá-la novamente. O melhor momento para salvar as informações em uma variável de armazenamento é quando a InfoWindow é criada.

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,
  };
}

Depois, quando a visualização de detalhes do lugar for fechada, você vai poder chamar a mesma função de criação da InfoWindow para recriar a última InfoWindow que estava aberta.

TypeScript

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

JavaScript

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

Atualizar a origem das rotas

Como há vários marcadores de distrito no mapa que o usuário pode escolher, atualizamos a origem de directionsOptions para o último distrito clicado usando essas linhas no listener de clique do marcador. Isso demonstra que directionsOptions pode ser atualizado mesmo depois que localContextMapView for inicializado.

Testar amostra