Personalizações do 3D Area Explorer

O 3D Area Explorer é uma solução que permite explorar comunidades em 3D de forma cativante. A solução usa: blocos fotorrealistas em 3D do Google, Place Search, Place Details e APIs Autocomplete.

Primeiros passos:

Ativar

Personalizar a experiência

A solução 3D Area Explorer é altamente personalizável, permitindo que você adapte a experiência às jornadas do cliente. É possível personalizar usando o painel de controle na interface ou o arquivo config.json.

Tudo pronto para personalizar? Veja como:

Local

Defina o ponto de partida da sua experiência ajustando a latitude e a longitude no arquivo config.json.

Controle de câmera

Assuma o controle da sua jornada selecionando o tipo de órbita da câmera: um caminho circular clássico ou uma onda senoidal intrigante.

  • Órbita fixa:

    Essa é uma órbita circular em uma altura fixa e em torno de um ponto de interesse específico.

    Veja uma órbita fixa em ação explorando o escritório do Google em Sydney.

  • Órbita dinâmica:

    A câmera se move suavemente em uma trajetória de onda senoidal ao redor de um ponto de interesse designado. Esse movimento único permite que os espectadores observem o ponto de interesse de várias alturas e ângulos, oferecendo uma experiência visual dinâmica e imersiva.

    Veja uma órbita dinâmica em ação explorando a Torre Eiffel.

Pontos de interesse (PDIs):

  • Personalize sua análise detalhada determinando os tipos de lugares que você quer descobrir. Escolha entre museus, parques, escolas e muito mais usando a matriz types em config.json.
  • Defina o número máximo de pontos de interesse mostrados ajustando o parâmetro density.
  • Modifique o searchRadius (in meters) para incluir lugares incríveis escondidos por perto ou focar em áreas específicas.
  • Defina a velocidade escolhida para o movimento da câmera com o parâmetro speed (in revolutions per minute).

Pré-carregamento da sua análise detalhada: use a personalização de URL para se aprofundar

O Explorador de Áreas em 3D permite predefinir sua exploração com a personalização de URL. Isso elimina a necessidade de configuração manual, simplificando a experiência do usuário.

Como criar o URL perfeito:

Basta anexar parâmetros específicos ao URL do Area Explorer para predefinir o local e outras configurações. Exemplo:

https://{base-url}/#location.coordinates.lat=40.7424396&location.coordinates.lng=-74.0061439

Esse URL define o ponto de partida para a latitude e longitude especificadas, transportando você instantaneamente para o local escolhido. Parâmetros disponíveis:

  • location.coordinates.lat: latitude do local escolhido.
  • location.coordinates.lng: longitude do local escolhido.
  • poi.types: uma lista separada por vírgulas de tipos de PDIs para mostrar.
  • poi.density: o número máximo escolhido de PDIs.
  • poi.searchRadius: o raio para pesquisar PDIs por perto.
  • camera.speed: velocidade de órbita da câmera.
  • camera.orbitType: tipo de órbita da câmera ("fixed-orbit" ou "dynamic-orbit").

Benefícios da personalização de URLs:

  • Simplifique a experiência do usuário predefinindo as configurações escolhidas.
  • Compartilhe trajetos específicos com locais e PDIs pré-carregados.
  • Incorporar experiências pré-configuradas do Explorador de Áreas em sites.

Ao personalizar o URL, você pode criar experiências sob medida e convidar outras pessoas para embarcar em aventuras selecionadas.

Outras personalizações

A seção anterior abordou os ajustes acessíveis pela interface ou pelo arquivo de configuração. No entanto, também há vários outros parâmetros integrados que podem ser modificados para personalizar ainda mais o aplicativo.

Para fazer essas personalizações avançadas, consulte o código no arquivo src/utils/cesium.js localizado no diretório src. As seguintes variáveis podem ser alteradas para mudar a aparência do aplicativo:

Altura da câmera

Ajuste o valor de CAMERA_HEIGHT para controlar a altura da câmera ao se aproximar de um ponto. Valores mais altos oferecem uma visão panorâmica mais afastada, enquanto valores mais baixos aproximam os detalhes da área.

// Camera height (in meters) above the target when flying to a point.
const CAMERA_HEIGHT = 100;
  • Configuração: CAMERA_HEIGHT
  • Valor padrão: 100
  • Descrição: define a altura da câmera acima do local de destino ao voar para um ponto.
  • Exemplos de valores:
    • 50: visão mais próxima, enfatizando detalhes.
    • 200: uma perspectiva mais panorâmica.

Inclinação da câmera

A inclinação inicial da câmera é definida por BASE_PITCH. Use valores negativos para uma inclinação para baixo e valores positivos para uma visualização para cima. Para adicionar um movimento dinâmico sutil à sua análise, mude AUTO_ORBIT_PITCH_AMPLITUDE.

// Pitch 30 degrees downwards
const BASE_PITCH = -30;
// change the pitch by 10 degrees over time
const AUTO_ORBIT_PITCH_AMPLITUDE = 10;
  • Configuração: BASE_PITCH e AUTO_ORBIT_PITCH_AMPLITUDE
  • Valores padrão:
    • BASE_PITCH: -30 (inclinação de 30 graus para baixo)
    • AUTO_ORBIT_PITCH_AMPLITUDE: 10 (mudança de inclinação em 10 graus ao longo do tempo)

Descrição:a inclinação da câmera é a inclinação visual de um mapa, medida em graus. Também é conhecido como inclinação. Essas configurações definem a inclinação inicial da câmera e o ajuste dinâmico de inclinação durante as rotações automáticas.

Exemplos de valores:

  • BASE_PITCH: 0 (nivelar câmera)
  • AUTO_ORBIT_PITCH_AMPLITUDE: 0 (sem variação de tom)

Alcance e zoom da câmera

Esses parâmetros definem o nível de zoom aplicado ao focar em pontos específicos. Valores menores significam um zoom mais próximo.

// Distance variation relative to initial range.
const RANGE_AMPLITUDE_RELATIVE = 0.55;

// Determines how much the camera should zoom in or out
const ZOOM_FACTOR = 20;

Configuração: RANGE_AMPLITUDE_RELATIVE e ZOOM_FACTOR

Valores padrão:

  • RANGE_AMPLITUDE_RELATIVE: 0,55 (variação de distância relativa)
  • ZOOM_FACTOR: 20 (fator de zoom da câmera)

Descrição:essas configurações definem a variação de alcance durante o movimento da câmera e o nível de zoom para uma visualização mais próxima.

Exemplos de valores:

  • RANGE_AMPLITUDE_RELATIVE: 1 (variação de intervalo completo)
  • ZOOM_FACTOR: 10 (menos zoom)
// Camera heading (rotation), pitch (tilt), and range (distance) for resetting view.
const CAMERA_OFFSET = {
  heading: 0, // No rotation offset.
  pitch: Cesium.Math.toRadians(BASE_PITCH),
  range: 800, // 800 meters from the center.
};

Redefinição da câmera

Quando um usuário quer redefinir a câmera para a posição original, os valores de CAMERA_OFFSET são usados. Essa configuração inclui o rumo (rotação), a inclinação e o alcance (a distância entre a câmera e o centro).

  • Configuração: CAMERA_OFFSET
  • Valores padrão:
    • heading: 0 (sem deslocamento de rotação)
    • pitch: Cesium.Math.toRadians(-30) (inclinação de 30 graus para baixo)
    • range: 800 (800 metros do centro)
  • Descrição: define a direção, a inclinação e o alcance da câmera para redefinir a visualização.
  • Exemplos de valores:
    • heading: 45 (graus, vista noroeste)
    • range: 1.500 metros (mais longe do centro)

Coordenadas iniciais:

START_COORDINATES define a longitude, a latitude e a altura iniciais da câmera. É aqui que a exploração vai começar. Portanto, defina a área que você quer que os usuários vejam primeiro.

// Default camera start position in longitude, latitude, and altitude.
const START_COORDINATES = {
  longitude: 0,
  latitude: 60,
  height: 15000000, // 15,000 km above the surface
};
  • Configuração: START_COORDINATES
  • Valores padrão:

    • longitude: 0
    • latitude: 60
    • height: 15000000 (15.000 km acima da superfície)
  • Exemplos de valores:

    • longitude: -122.4934, latitude: 37.7951 (Ponte Golden Gate)
    • height: 2000 (posição inicial mais próxima)

Carregar um local predefinido

O objeto location em config.json define o centro da área. É o ponto de vista inicial da câmera no visualizador do Cesium.coordinates: Define a latitude (lat) e a longitude (lng) do local para onde a câmera deve se mover primeiro. Ajuste esses valores para definir a câmera em qualquer local específico do globo.

  {
  "location": {
    "coordinates": { "lat": null, "lng": null }
  },

Com essa configuração, você pode iniciar o aplicativo 3D Place Navigator com zoom em um local específico da sua escolha. Use a ferramenta de geocodificação do Google para receber as coordenadas de latitude e longitude de um endereço ou nome de lugar, especificando-as no objeto de local:

  1. Acesse a ferramenta de geocodificação.
  2. Criar uma solicitação de geocodificação: clique na seção "Teste você mesmo" e insira o local escolhido no campo "Endereço". Você pode especificar um endereço, nome de lugar ou até mesmo pontos de referência.
  3. Gerar coordenadas Clique no botão "Executar" para enviar sua solicitação. A ferramenta vai retornar uma resposta com várias informações sobre o local, incluindo as coordenadas de latitude e longitude exibidas na seção geometry.location.
  4. Use geocódigos: copie os valores de latitude e longitude recuperados da resposta e cole-os no objeto coordinates na sua configuração.

Observação: os códigos de geolocalização usados dessa forma precisam seguir os termos descritos na seção 3.4 dos Termos de Serviço da Plataforma Google Maps. Ou seja, eles não podem ser armazenados em cache por mais de 30 dias e precisam ser atualizados após esse período.

imagem

Essa configuração usaria a ferramenta de geocodificação para determinar automaticamente as coordenadas da sede do Google em Mountain View, Califórnia, e iniciar o aplicativo 3D Place Navigator com a câmera centralizada nesse local.

Personalizações avançadas

Você pode fazer outras personalizações analisando o código mais a fundo. A seção a seguir mostra algumas opções

Adicionar um novo caminho de câmera

A solução implementa dois caminhos de câmera diferentes:

fixed-orbit" | "dynamic-orbit"

Mas, se quiser, você pode criar um novo caminho de câmera e implementá-lo usando o

/src/utils/cesium.js na função calculateAutoOrbitFrame.

Para usar esse novo cálculo de caminho no painel de configuração,consulte a implementação em demo/src/camera-settings.js..

Adicionar mais tipos de lugar

A lista de tipos de lugar para a configuração pode ser ajustada no arquivo demo/src/place-settings.js. A partir da linha 4, estão os tipos de lugar disponíveis na demonstração.

Se você quiser usar tipos de lugar específicos sem mudar a origem da demonstração, basta adicioná-los ao arquivo config.json em poi.types.

Personalizar o estilo (CSS)

Para os estilos, trabalhamos com variáveis CSS. Elas são compatíveis com todos os principais navegadores e possibilitam mudar uma linha em um local central e atualizar propriedades CSS específicas. Nossas variáveis CSS são definidas em src/main.css.. Lá, você pode ajustar cores, configurações de fonte e preenchimentos ou margens para todo o aplicativo.

Sobrepor dados adicionais

Para sobrepor mais dados, atualize o arquivo src/utils/cesium.js e consulte a documentação do Cesium sobre como adicionar dados GeoJSON ou outros dados georreferenciados ao globo.

Remover seções de configuração

Nosso aplicativo JavaScript tem três seções principais no arquivo de configuração: demo/src/[config-panel.js](config-panel.js): location, poi e camera. Cada uma dessas seções oferece opções de configuração para diferentes aspectos do aplicativo. Os desenvolvedores podem personalizar essas seções com base nas necessidades específicas.

1.Remover uma seção específica da configuração

  • Seção de local

Para remover a seção location, encontre a linha a seguir no código e comente ou exclua:

const locationConfig = { ...config.location, ...customConfig.location };
  • Seção de PDI

Para remover a seção poi, encontre a linha a seguir no código e comente ou exclua-a:

const poiConfig = { ...config.poi, ...customConfig.poi };
  • Seção da câmera

Para remover a seção camera, encontre a linha a seguir no código e comente ou exclua-a:

const cameraConfig = { ...config.camera, ...customConfig.camera };

2. Atualizar configurações combinadas

Depois de remover uma seção, é essencial atualizar o objeto de configuração combinado. Esse objeto mescla a configuração padrão com as personalizações. Remova a propriedade correspondente do objeto combinedConfig:

const combinedConfig = {
 location: { ...config.location, ...customConfig.location }, // Remove if location section is removed

 poi: { ...config.poi, ...customConfig.poi }, // Remove if poi section is removed
 camera: { ...config.camera, ...customConfig.camera }, // Remove if camera section is removed
};

3. Ajustar elementos da interface

Se a remoção de uma seção também significar a remoção de elementos da interface relacionados, atualize o código HTML de acordo. Por exemplo, se você quiser remover uma seção específica do painel de admin, como a velocidade da câmera, atualize os códigos JS e HTML.

4. Remover seção de configurações da câmera

Para remover a seção de configurações da câmera da interface, encontre a linha a seguir e comente ou exclua:

const cameraSettingsSecgetCameraSettingsSection(cameraConfig);

Removendo o resumo da seção de local

const locationSection = await getLocationSettingsSection(locationConfig);

Conclusão

Neste documento, mostramos as várias opções de personalização disponíveis no Explorador de Áreas para adaptar sua experiência de exploração em 3D. Ao modificar o comportamento da câmera, ajustar a inclinação visual e mudar os níveis de zoom, você pode criar experiências únicas e envolventes que mostram as configurações e os pontos de interesse selecionados.

Não se esqueça de testar diferentes configurações e ajustar os parâmetros para atender às suas necessidades específicas. Ao aproveitar o poder da personalização, você pode criar jornadas imersivas e personalizadas que cativam seu público e dão vida à sua visão.