Adicionar uma camada de polígono ao mapa

Este artigo mostra-lhe como compor as áreas de e MultiPolygon geometrias de Polygon funcionalidades no mapa com uma camada de polígonos. O Azure Maps SDK Web também suporta a criação de geometrias Circle, conforme definido no esquema GeoJSON expandido. Estes círculos são transformados em polígonos quando compostos no mapa. Todas as geometrias de funcionalidades podem ser facilmente atualizadas quando encapsuladas com o atlas. Classe de forma.

Utilizar uma camada de polígono

Quando uma camada de polígono está ligada a uma origem de dados e carregada no mapa, compõe a área com Polygon as funcionalidades e MultiPolygon . Para criar um polígono, adicione-o a uma origem de dados e componione-o com uma camada de polígonos com a classe PolygonLayer .

O seguinte código de exemplo demonstra a criação de uma camada de polígono que cobre o Central Park de Nova Iorque com um polígono vermelho.

 
function InitMap()
{
  var map = new atlas.Map('myMap', {
    center: [-73.97, 40.78],
    zoom: 11,
    view: "Auto",
    
    //Add authentication details for connecting to Azure Maps.
    authOptions: {
      authType: 'subscriptionKey',
      subscriptionKey: '{Your-Azure-Maps-Subscription-key}'
    }
  });

  //Wait until the map resources are ready.
  map.events.add('ready', function () {

    /*Create a data source and add it to the map*/
    var dataSource = new atlas.source.DataSource();
    map.sources.add(dataSource);

    /*Create a rectangle*/
    dataSource.add(new atlas.Shape(new atlas.data.Feature(
    new atlas.data.Polygon([[
      [-73.98235, 40.76799],
      [-73.95785, 40.80044],
      [-73.94928, 40.7968],
      [-73.97317, 40.76437],
      [-73.98235, 40.76799]
    ]])
    )));

    /*Create and add a polygon layer to render the polygon to the map*/
    map.layers.add(new atlas.layer.PolygonLayer(dataSource, null,{
    fillColor: "red",
    fillOpacity: 0.7
    }), 'labels')
  });
}

Uma captura de ecrã do mapa de Nova Iorque a demonstrar a camada de polígonos que está a cobrir o Central Park com cor de preenchimento definida como vermelho e o preenchimento da Opacidade definido como 0,7.

Utilizar uma camada de polígonos e linhas em conjunto

Uma camada de linha é utilizada para compor o contorno dos polígonos. O seguinte exemplo de código compõe um polígono como o exemplo anterior, mas agora adiciona uma camada de linha. Esta camada de linha é uma segunda camada ligada à origem de dados.

function InitMap()
{
  var map = new atlas.Map('myMap', {
    center: [-73.97, 40.78],
    zoom: 11,
    view: "Auto",
    
    //Add authentication details for connecting to Azure Maps.
    authOptions: {
      // Get an Azure Maps key at https://azuremaps.com/.
      authType: 'subscriptionKey',
      subscriptionKey: '{subscription key}'
    }
  });

  //Wait until the map resources are ready.
  map.events.add('ready', function () {

    /*Create a data source and add it to the map*/
    var dataSource = new atlas.source.DataSource();
    map.sources.add(dataSource);

    /*Create a rectangle*/
    dataSource.add(new atlas.data.Polygon([[
    [-73.98235, 40.76799],
    [-73.95785, 40.80045],
    [-73.94928, 40.7968],
    [-73.97317, 40.76437],
    [-73.98235, 40.76799]
    ]])
          );

    //Create a polygon layer to render the filled in area of the polygon.
    var polygonLayer = new atlas.layer.PolygonLayer(dataSource, 'myPolygonLayer', {
    fillColor: 'rgba(0, 200, 200, 0.5)'
    });

    //Create a line layer for greater control of rendering the outline of the polygon.
    var lineLayer = new atlas.layer.LineLayer(dataSource, 'myLineLayer', {
    strokeColor: 'red',
    strokeWidth: 2
    });

    /*Create and add a polygon layer to render the polygon to the map*/
    map.layers.add([polygonLayer, lineLayer])
  });
}

Uma captura de ecrã de um mapa da cidade de Nova Iorque que demonstra uma camada de polígono maioritariamente transparente que cobre todo o Central Park, com uma linha vermelha.

Preencher um polígono com um padrão

Além de preencher um polígono com uma cor, pode utilizar um padrão de imagem para preencher o polígono. Carregue um padrão de imagem para os recursos sprite da imagem do mapas e, em seguida, referencie esta imagem com a fillPattern propriedade da camada de polígono.

Para obter um exemplo totalmente funcional que mostre como utilizar um modelo de imagem como um padrão de preenchimento numa camada de polígono, veja Preencher o polígono com modelo de ícone incorporado no Azure Maps Exemplos. Para obter o código fonte deste exemplo, veja Preenchimento do polígono com o código fonte do modelo de ícone incorporado.

Uma captura de ecrã de um mapa do mundo com pontos vermelhos a formar um triângulo no centro do mapa.

Dica

O SDK Web Azure Maps fornece vários modelos de imagem personalizáveis que pode utilizar como padrões de preenchimento. Para obter mais informações, veja o documento Como utilizar modelos de imagem .

Personalizar uma camada de polígono

A camada Polígono tem apenas algumas opções de estilo. Veja o mapa de exemplo Opções de Camada de Polígono no Azure Maps Exemplos para experimentá-los. Para obter o código fonte deste exemplo, veja Polygon Layer Options source code (Código fonte das Opções de Camadas do Polígono).

Uma captura de ecrã da ferramenta Opções de Camada de Polígono.

Adicionar um círculo ao mapa

Azure Maps utiliza uma versão expandida do esquema GeoJSON que fornece uma definição para círculos. Um círculo é composto no mapa ao criar uma Point funcionalidade. Tem Point uma subType propriedade com um valor de "Circle" e uma radius propriedade com um número que representa o raio em metros.

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [-122.126986, 47.639754]
    },
    "properties": {
        "subType": "Circle",
        "radius": 100
    }
}  

O SDK Web Azure Maps converte estas Point funcionalidades em Polygon funcionalidades. Em seguida, estas funcionalidades são compostas no mapa com camadas de polígonos e linhas, conforme mostrado no seguinte exemplo de código.

function InitMap()
{
  var map = new atlas.Map('myMap', {
    center: [-73.985708, 40.75773],
    zoom: 12,
    view: "Auto",
    
    //Add authentication details for connecting to Azure Maps.
    authOptions: {
      // Get an Azure Maps key at https://azuremaps.com/.
      authType: 'subscriptionKey',
      subscriptionKey: '{Your-Azure-Maps-Subscription-key}'
    }      
  });

  //Wait until the map resources are ready.
  map.events.add('ready', function () {

    /*Create a data source and add it to the map*/
    var dataSource = new atlas.source.DataSource();
    map.sources.add(dataSource);

    //Create a circle
    dataSource.add(new atlas.data.Feature(new atlas.data.Point([-73.985708, 40.75773]), 
    {
      subType: "Circle",
      radius: 1000
    }));

    // Create a polygon layer to render the filled in area
    // of the circle polygon, and add it to the map.
    map.layers.add(new atlas.layer.PolygonLayer   (dataSource, null, {
      fillColor: 'rgba(0, 200, 200, 0.8)'
    }));
  });
}

Uma captura de ecrã de um mapa a mostrar um círculo verde parcialmente transparente em Nova Iorque. Isto demonstra como adicionar um círculo a um mapa.

Tornar uma geometria fácil de atualizar

Uma Shape classe encapsula uma Geometria ou Funcionalidade e facilita a atualização e manutenção destas funcionalidades. Para instanciar uma variável de forma, transmita uma geometria ou um conjunto de propriedades para o construtor da forma.

//Creating a shape by passing in a geometry and a object containing properties.
var shape1 = new atlas.Shape(new atlas.data.Point[0,0], { myProperty: 1 });

//Creating a shape using a feature.
var shape2 = new atlas.Shape(new atlas.data.Feature(new atlas.data.Point[0,0], { myProperty: 1 });

O exemplo Tornar uma geometria fácil de atualizar mostra como moldar um objeto GeoJSON circular com uma classe de forma. À medida que o valor do raio muda na forma, o círculo é composto automaticamente no mapa. Para obter o código fonte deste exemplo, veja Tornar uma geometria fácil de atualizar o código fonte.

Uma captura de ecrã de um mapa a mostrar um círculo vermelho em Nova Iorque com uma barra de controlo de deslize intitulada Circle Radius e à medida que desliza a barra para a direita ou para a esquerda, o valor do raio muda e o tamanho do círculo ajusta-se automaticamente no mapa.

Passos seguintes

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

Para obter mais exemplos de código para adicionar aos mapas, consulte os seguintes artigos:

Mais recursos: