Use o pacote npm azure-maps-control

O pacote npm azure-maps-control é uma biblioteca do lado do cliente que permite incorporar o controle de mapa do Azure Mapas em seus aplicativos node.js usando JavaScript ou TypeScript. Essa biblioteca facilita o uso dos serviços REST do Azure Mapas e permite que você personalize mapas interativos com seu conteúdo e imagens.

Pré-requisitos

Para usar o pacote npm em um aplicativo, você deve ter os pré-requisitos a seguir:

Instalação

Instale o pacote azure-maps-control mais recente.

npm install azure-maps-control

Esse pacote inclui uma versão reduzida do código-fonte, a folha de estilo CSS e as definições do TypeScript para o controle de mapa do Azure Mapas.

Você também precisa inserir a Folha de Estilos CSS para que vários controles sejam exibidos corretamente. Se estiver usando um empacotador JavaScript para agrupar as dependências e empacotar seu código, consulte a documentação do seu empacotador sobre como fazer isso. Para o Webpack, isso costuma ser feito por meio de uma combinação de style-loader e css-loader com a documentação disponível no style-loader.

Para começar, instale style-loader e css-loader:

npm install --save-dev style-loader css-loader

Dentro do arquivo de origem, importe atlas.min.css:

import "azure-maps-control/dist/atlas.min.css";

Em seguida, adicione carregadores à parte de regras do módulo da configuração do Webpack:

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: ["style-loader", "css-loader"]
      }
    ]
  }
};

Consulte a seção a seguir para obter um exemplo completo.

Criar um mapa em um aplicativo node.js

Insira um mapa em uma página da Web usando o pacote npm de controle de mapas.

  1. Criar um novo projeto

    npm init
    

    npm init é um comando que ajuda você a criar um arquivo package.json para seu projeto de nó. Ele fará algumas perguntas e gerará o arquivo com base nas suas respostas. Você também pode usar -y ou –yes para ignorar as perguntas e usar os valores padrão. O arquivo package.json contém as informações sobre seu projeto, como nome, versão, dependências, scripts etc.

  2. Instale o pacote azure-maps-control mais recente.

    npm install azure-maps-control
    
  3. Instale o Webpack e outras dependências de desenvolvimento.

    npm install --save-dev webpack webpack-cli style-loader css-loader
    
  4. Atualize a package.json adicionando um novo script para "build": "webpack". O arquivo agora deve ter a seguinte aparência:

    {
      "name": "azure-maps-npm-demo",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "build": "webpack"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "azure-maps-control": "^2.3.1"
      },
      "devDependencies": {
        "css-loader": "^6.8.1",
        "style-loader": "^3.3.3",
        "webpack": "^5.88.1",
        "webpack-cli": "^5.1.4"
      }
    }
    
  5. Crie um arquivo de configuração do Webpack chamado webpack.config.js na pasta raiz do projeto. Inclua essas configurações no arquivo de configuração.

    module.exports = {
      entry: "./src/js/main.js",
      mode: "development",
      output: {
        path: `${__dirname}/dist`,
        filename: "bundle.js"
      },
      module: {
        rules: [
          {
            test: /\.css$/i,
            use: ["style-loader", "css-loader"]
          }
        ]
      }
    };
    
  6. Adicione um novo arquivo JavaScript em ./src/js/main.js com esse código.

    import * as atlas from "azure-maps-control";
    import "azure-maps-control/dist/atlas.min.css";
    
    const onload = () => {
      // Initialize a map instance.
      const map = new atlas.Map("map", {
        view: "Auto",
        // Add authentication details for connecting to Azure Maps.
        authOptions: {
          authType: "subscriptionKey",
          subscriptionKey: "<Your Azure Maps Key>"
        }
      });
    };
    
    document.body.onload = onload;
    
  7. Adicione um novo arquivo HTML chamado index.html na pasta raiz do projeto com este conteúdo:

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8" />
        <title>Azure Maps demo</title>
        <script src="./dist/bundle.js" async></script>
        <style>
          html,
          body,
          #map {
            width: 100%;
            height: 100%;
            padding: 0;
            margin: 0;
          }
        </style>
      </head>
      <body>
        <div id="map"></div>
      </body>
    </html>
    

    Seu projeto agora deve ter os seguintes arquivos:

    ├───node_modules
    ├───index.html
    ├───package-lock.json
    ├───package.json
    ├───webpack.config.js
    └───src
        └───js
            └───main.js
    
  8. Execute o seguinte comando para gerar um arquivo JavaScript em ./dist/bundle.js

    npm run build
    
  9. Abra o arquivo index.html no seu navegador da Web e exiba o mapa renderizado. Ela deve parecer com a seguinte imagem:

    A screenshot showing a map of the world.

Usar outros pacotes npm do Azure Mapas

O Azure Mapas oferece outros módulos como pacotes npm que podem ser integrados ao seu aplicativo. Esses módulos incluem:

O exemplo a seguir mostra como importar um módulo e usá-lo no seu aplicativo. Esse exemplo usa azure-maps-spatial-io para ler uma cadeia de caracteres POINT(-122.34009 47.60995) como GeoJSON e renderizá-la no mapa usando uma camada de bolha.

  1. Instalar o pacote npm.

    npm install azure-maps-spatial-io
    
  2. Em seguida, use uma declaração de importação para adicionar o módulo a um arquivo de origem:

    import * as spatial from "azure-maps-spatial-io";
    
  3. Use spatial.io.ogc.WKT.read() para analisar o texto.

    import * as atlas from "azure-maps-control";
    import * as spatial from "azure-maps-spatial-io";
    import "azure-maps-control/dist/atlas.min.css";
    
    const onload = () => {
      // Initialize a map instance.
      const map = new atlas.Map("map", {
        center: [-122.34009, 47.60995],
        zoom: 12,
        view: "Auto",
        // Add authentication details for connecting to Azure Maps.
        authOptions: {
          authType: "subscriptionKey",
          subscriptionKey: "<Your Azure Maps Key>"
        }
      });
    
      // Wait until the map resources are ready.
      map.events.add("ready", () => {
        // Create a data source and add it to the map.
        const datasource = new atlas.source.DataSource();
        map.sources.add(datasource);
    
        // Create a layer to render the data
        map.layers.add(new atlas.layer.BubbleLayer(datasource));
    
        // Parse the point string.
        var point = spatial.io.ogc.WKT.read("POINT(-122.34009 47.60995)");
    
        // Add the parsed data to the data source.
        datasource.add(point);
      });
    };
    
    document.body.onload = onload;
    
  4. O Webpack 5 pode gerar erros sobre a impossibilidade de resolver alguns módulos principais do node.js. Adicione essas configurações ao seu arquivo de configuração do Webpack para corrigir o problema.

    module.exports = {
      // ...
      resolve: {
        fallback: { "crypto": false, "worker_threads": false }
      }
    };
    

Essa imagem é uma captura de tela da saída da amostra.

A screenshot showing a map of Seattle with a blue dot.

Próximas etapas

Saiba como criar e interagir com um mapa:

Saiba como definir o estilo de um mapa:

Conheça as melhores práticas e veja exemplos: