Como usar modelos de imagem

As imagens podem ser usadas com marcadores HTML e várias camadas no SDK da Web do Azure Mapas:

  • As camadas de símbolo podem renderizar pontos no mapa com um ícone de imagem. Os símbolos também podem ser renderizados ao longo de um caminho de linhas.
  • As camadas de polígono podem ser renderizadas com uma imagem de padrão de preenchimento.
  • Os marcadores HTML podem renderizar pontos usando imagens e outros elementos HTML.

Para garantir um bom desempenho com camadas, carregue as imagens no recurso de sprite de imagem de mapa antes de renderizar. O IconOptions, do SymbolLayer, pré-carrega algumas imagens de marcador em um punhado de cores no sprite de imagem do mapa, por padrão. Essas imagens de marcador e outras mais estão disponíveis como modelos SVG. Eles podem ser usados para criar imagens com escalas personalizadas ou usados como uma cor primária e secundária do cliente. No total, há 42 modelos de imagem fornecidos: 27 ícones de símbolo e 15 padrões de preenchimento de polígono.

Modelos de imagem podem ser adicionados aos recursos de sprite de imagem de mapa usando a função map.imageSprite.createFromTemplate. Essa função permite que até cinco parâmetros sejam empregados;

createFromTemplate(id: string, templateName: string, color?: string, secondaryColor?: string, scale?: number): Promise<void>

O id é um identificador exclusivo que você cria. O id é atribuído à imagem quando é adicionado ao sprite de imagem de mapas. Use esse identificador nas camadas para especificar qual recurso de imagem deve ser renderizado. templateName especifica qual modelo de imagem usar. A opção color define a cor primária da imagem e as opções secondaryColor definem a cor secundária da imagem. A opção scale dimensiona o modelo de imagem antes de aplicá-lo ao sprite de imagem. Quando é aplicada ao sprite da imagem, a imagem é convertida em um arquivo PNG. Para garantir uma renderização nítida, é melhor aumentar o modelo da imagem antes de adicioná-lo ao sprite, do que aumentá-lo em uma camada.

Esta função carrega de forma assíncrona a imagem no sprite de imagem. Portanto, ele retorna uma promessa de que você pode aguardar a conclusão dessa função.

O código a seguir mostra como criar uma imagem a partir de um dos modelos integrados e, a seguir, usá-la com uma camada de símbolo.

map.imageSprite.createFromTemplate('myTemplatedIcon', 'marker-flat', 'teal', '#fff').then(function () {

   //Add a symbol layer that uses the custom created icon.
   map.layers.add(new atlas.layer.SymbolLayer(datasource, null, {
      iconOptions: {
         image: 'myTemplatedIcon'
      }
   }));
});

Usar um modelo de imagem com uma camada de símbolo

Depois que um modelo de imagem é carregado no sprite de imagem do mapa, ele pode ser renderizado como uma camada de símbolo referenciando a ID do recurso de imagem na opção image de iconOptions.

A amostra do modelo de camada de símbolo com ícone interno demonstrará como fazer isso renderizando uma camada de símbolo usando o modelo de imagem do marker-flat com uma cor primária verde-azulada e uma cor secundária branca, conforme mostrado na captura de tela a seguir.

Captura de tela mostrando um mapa que exibe uma camada de símbolo usando o modelo de imagem de marcador plano com uma cor primária verde-azulada e uma cor secundária branca.

Para obter o código-fonte desse exemplo, consulte Camada de símbolos com código de exemplo do modelo do ícone interno.

Usar um modelo de imagem ao longo de um caminho de linhas

Depois que um modelo de imagem é carregado no sprite de imagem do mapa, ele pode ser renderizado ao longo do caminho de uma linha por meio da adição de uma LineString a uma fonte de dados e usando uma camada de símbolo com uma opção lineSpacing e referenciando a ID do recurso de imagem na opção image de iconOptions.

O modelo de camada de linhas com ícone interno demonstrará como fazer isso. De acordo com a captura de tela a seguir, ele renderiza uma linha vermelha no mapa e usa uma camada de símbolo usando o modelo de imagem do car com uma cor primária azul-anil e uma cor secundária branca. Para obter o código-fonte desse exemplo, consulte Camada de linha com o código de exemplo do modelo de ícone interno.

Captura de tela mostrando um mapa que exibe uma camada de linhas marcando a rota com ícones de carro ao longo da rota.

Dica

Se o modelo de imagem apontar para cima, defina a opção de ícone rotation da camada de símbolo para 90 se quiser que ele aponte na mesma direção da linha.

Usar um modelo de imagem com uma camada de polígonos

Depois que um modelo de imagem é carregado no sprite de imagem do mapa, ele pode ser renderizado como um padrão de preenchimento em uma camada de polígono referenciando a ID do recurso de imagem na opção fillPattern da camada.

A amostra do modelo de polígono de preenchimento com ícone interno demonstrará como renderizar uma camada de polígono usando o modelo de imagem do dot com uma cor primária vermelha e uma cor secundária transparente, conforme mostrado na captura de tela a seguir. Para obter o código-fonte desse exemplo, consulte Código de exemplo de preenchimento do polígono com o modelo de ícone interno.

Captura de tela mostrando um mapa que exibe uma camada de polígonos usando o modelo de imagem de ponto com uma cor primária vermelha e uma cor secundária transparente.

Dica

Definir a cor secundária dos padrões de preenchimento torna mais fácil ver que o mapa subjacente ainda fornecerá o padrão principal.

Usar um modelo de imagem com um marcador HTML

Um modelo de imagem pode ser recuperado usando a função altas.getImageTemplate e usado como o conteúdo de um marcador HTML. O modelo pode ser passado para a opção htmlContent do marcador e personalizado usando as opções color, secondaryColor e text.

A amostra do modelo de marcador de HTML com ícone interno demonstrará isso usando o modelo do marker-arrow com uma cor primária vermelha, uma cor secundária rosa e um valor de texto de "00", conforme mostrado na captura de tela a seguir. Para obter o código-fonte desse exemplo, consulte Código de exemplo do marcador HTML com modelo de ícone interno.

Captura de tela mostrando um mapa que exibe o modelo de seta com marcador com uma cor primária vermelha, uma cor secundária rosa e um valor de texto de 00 dentro da seta vermelha.

Dica

Modelos de imagem também podem ser usados fora do mapa. A função getImageTemplate retorna uma cadeia de caracteres SVG com espaços reservados; {color}, {secondaryColor}, {scale}, {text}. Substitua esses valores de espaço reservado para criar uma cadeia de caracteres SVG válida. Em seguida, você pode adicionar a cadeia de caracteres SVG diretamente ao HTML DOM ou convertê-la em um URI de dados e inseri-la em uma marca de imagem. Por exemplo:

//Retrieve an SVG template and replace the placeholder values.
var svg = atlas.getImageTemplate('marker').replace(/{color}/, 'red').replace(/{secondaryColor}/, 'white').replace(/{text}/, '').replace(/{scale}/, 1);

//Convert to data URI for use in image tags.
var dataUri = 'data:image/svg+xml;base64,' + btoa(svg);

Criar modelos reutilizáveis personalizados

Se o seu aplicativo usa o mesmo ícone com módulos diferentes ou se você está criando um módulo que adiciona mais modelos de imagem, você pode adicionar e recuperar facilmente esses ícones do SDK da Web do Azure Mapas. Use as funções estáticas a seguir no namespace atlas.

Nome Tipo de retorno Descrição
addImageTemplate(templateName: string, template: string, override: boolean) Adiciona um modelo de imagem SVG personalizado ao namespace atlas.
getImageTemplate(templateName: string, scale?: number) string Recupera um modelo SVG por nome.
getAllImageTemplateNames() string[] Recupera um modelo SVG por nome.

Os modelos de imagem SVG dão suporte aos seguintes valores de espaço reservado:

Espaço reservado Descrição
{color} A cor primária.
{secondaryColor} A cor secundária.
{scale} A imagem SVG é convertida em uma imagem png quando adicionada ao sprite de imagem do mapa. Esse espaço reservado pode ser usado para dimensionar um modelo antes de ser convertido para garantir que seja renderizado com clareza.
{text} O local para renderizar o texto quando usado com um marcador HTML.

A amostra do namespace Adicionar modelo de ícone personalizado ao atlas demonstrará como usar um modelo de SVG e adicioná-lo ao SDK da Web do Azure Mapas como um modelo de ícone reutilizável, conforme mostrado na captura de tela a seguir. Para obter o código-fonte desse exemplo, consulte Adicionar modelo de ícone personalizado ao código de exemplo do namespace atlas.

Captura de tela mostrando um mapa que exibe uma camada de polígonos na forma de um grande triângulo verde com múltiplas imagens de âncoras azuis dentro.

Lista de modelos de imagem

Esta tabela lista todos os modelos de imagem atualmente disponíveis no SDK da Web do Azure Mapas. O nome do modelo está acima de cada imagem. Por padrão, a cor primária é azul e a cor secundária é branca. Para tornar a cor secundária mais fácil de ver em um fundo branco, as imagens a seguir têm a cor secundária definida como preto.

Modelos de ícone de símbolo

marcador

marker-thick

marker-circle

marker-flat

Ícone de marker

Ícone de marker-thick

Ícone de marker-circle

Ícone de marker-flat


marker-square

marker-square-cluster

marker-arrow

marker-ball-pin

Ícone de marker-square

Ícone de marker-square-cluster

Ícone de marker-arrow

Ícone de marker-ball-pin


marker-square-rounded

marker-square-rounded-cluster

flag

flag-triangle

Ícone de marker-square-rounded

Ícone de marker-square-rounded-cluster

Ícone de flag

Ícone de flag-triangle


triangle

triangle-thick

triangle-arrow-up

triangle-arrow-left

Ícone de triangle

Ícone de triangle-thick

Ícone de triangle-arrow-up

Ícone de triangle-arrow-left


hexagon

hexagon-thick

hexagon-rounded

hexagon-rounded-thick

Ícone de hexagon

Ícone de hexagon-thick

Ícone de hexagon-rounded

Ícone de hexagon-rounded-thick


pin

pin-round

rounded-square

rounded-square-thick

ícone fixar

Ícone de pin-round

Ícone de rounded-square

Ícone de rounded-square-thick


arrow-up

arrow-up-thin

car

 

Ícone de arrow-up

Ícone de arrow-up-thin

Ícone de car

 

Modelos de padrão de preenchimento de polígono

checker

checker-rotated

círculos

circles-spaced

Ícone de checker

Ícone de checker-rotated

Ícone de circles

Ícone de circles-spaced


diagonal-lines-up

diagonal-lines-down

diagonal-stripes-up

diagonal-stripes-down

Ícone de diagonal-lines-up

Ícone de diagonal-lines-down

Ícone de diagonal-stripes-up

Ícone de diagonal-stripes-down


grid-lines

rotated-grid-lines

rotated-grid-stripes

x-fill

Ícone de grid-lines

Ícone de rotated-grid-lines

Ícone de rotated-grid-stripes

Ícone de x-fill


zig-zag

zig-zag-vertical

dots

 

Ícone de zig-zag

Ícone de zig-zag-vertical

Ícone de dots

 


Ícones de imagem pré-carregados

O mapa pré-carrega um conjunto de ícones no sprite de imagem do mapa usando os modelos marker, pin e pin-round. Esses nomes de ícones e seus valores de cores estão listados na tabela a seguir.

nome do ícone cor secondaryColor
marker-black #231f20 #ffffff
marker-blue #1a73aa #ffffff
marker-darkblue #003963 #ffffff
marker-red #ef4c4c #ffffff
marker-yellow #f2c851 #ffffff
pin-blue #2072b8 #ffffff
pin-darkblue #003963 #ffffff
pin-red #ef4c4c #ffffff
pin-round-blue #2072b8 #ffffff
pin-round-darkblue #003963 #ffffff
pin-round-red #ef4c4c #ffffff

Ferramenta Experimentar agora

Com a ferramenta a seguir, você pode renderizar os diferentes modelos de imagem integrados de várias maneiras e personalizar as cores primárias e secundárias e a escala.


Próximas etapas

Saiba mais sobre as classes e métodos usados neste artigo:

Confira os artigos a seguir para obter mais exemplos de código onde os modelos de imagem podem ser usados: