Dela via


Lägga till ett linjeskikt på kartan

Ett linjeskikt kan användas för att återge LineString och MultiLineString funktioner som sökvägar eller vägar på kartan. Ett linjeskikt kan också användas för att återge dispositionen av Polygon och MultiPolygon funktionerna. En datakälla är ansluten till ett linjeskikt för att tillhandahålla data som ska återges.

Dricks

Linjeskikt återger som standard koordinaterna för polygoner samt rader i en datakälla. Om du vill begränsa lagret så att det bara renderar LineString-funktioner anger filter du egenskapen för lagret till ['==', ['geometry-type'], 'LineString'] eller ['any', ['==', ['geometry-type'], 'LineString'], ['==', ['geometry-type'], 'MultiLineString']] om du vill inkludera MultiLineString-funktioner också.

Följande kod visar hur du skapar en rad. Lägg till raden i en datakälla och rendera den sedan med ett linjeskikt med klassen LineLayer .

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

//Create a line and add it to the data source.
dataSource.add(new atlas.data.LineString([[-73.972340, 40.743270], [-74.004420, 40.756800]]));
  
//Create a line layer to render the line to the map.
map.layers.add(new atlas.layer.LineLayer(dataSource, null, {
    strokeColor: 'blue',
    strokeWidth: 5
}));

Följande skärmbild visar ett exempel på ovanstående funktioner.

En skärmbild som visar ett linjeskikt på en Azure Maps-karta.

Linjeskikt kan utformas med hjälp av LineLayerOptions och Använda datadrivna formatuttryck.

Lägga till symboler längs en linje

Följande exempel visar hur du lägger till pilikoner längs en linje på kartan. När du använder ett symbollager anger du placement alternativet till line. Det här alternativet renderar symbolerna längs linjen och roterar ikonerna (0 grader = höger).

function InitMap()
{
    var map = new atlas.Map('myMap', {
    center: [-122.135, 47.65],
    zoom: 11,
    view: "Auto",

    //Add authentication details for connecting to Azure Maps.
    authOptions: {
      authType: 'subscriptionKey',
      subscriptionKey: '{Your-Azure-Maps-Subscription-key}'
    }
  });

  var datasource;

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

    //Load the custom image icon into the map resources.
    map.imageSprite.add('arrow-icon', '/images/icons/purpleArrowRight.png').then(function () {
      //Create a data source and add it to the map.
      datasource = new atlas.source.DataSource();
      map.sources.add(datasource);

      //Create a line and add it to the data source.
      datasource.add(new atlas.data.Feature(new atlas.data.LineString([
        [-122.18822, 47.63208],
        [-122.18204, 47.63196],
        [-122.17243, 47.62976],
        [-122.16419, 47.63023],
        [-122.15852, 47.62942],
        [-122.15183, 47.62988],
        [-122.14256, 47.63451],
        [-122.13483, 47.64041],
        [-122.13466, 47.64422],
        [-122.13844, 47.65440],
        [-122.13277, 47.66515],
        [-122.12779, 47.66712],
        [-122.11595, 47.66712],
        [-122.11063, 47.66735],
        [-122.10668, 47.67035],
        [-122.10565, 47.67498]
      ])));

      //Add a layers for rendering data.
      map.layers.add([
        //Add a line layer for displaying the line.
        new atlas.layer.LineLayer(datasource, null, {
          strokeColor: 'DarkOrchid',
          strokeWidth: 3
        }),

        //Add a symbol layer for rendering the arrow along the line.
        new atlas.layer.SymbolLayer(datasource, null, {
          //Specify how much space should be between the symbols in pixels.
          lineSpacing: 100,

          //Tell the symbol layer that the symbols are being rendered along a line.
          placement: 'line',
          iconOptions: {
            image: 'arrow-icon',
            allowOverlap: true,
            anchor: 'center',
            size: 0.8
          }
        })
      ]);
    });
  });
}

Den här koden skapar en karta som visas på följande sätt:

En skärmbild som visar ett linjeskikt på en Azure Maps-karta med pilsymboler längs linjen.

Kommentar

En kopia av bildfilen som används i exemplet ovan finns i purpleArrowRight.png i GitHub.

Dricks

Azure Maps webb-SDK innehåller flera anpassningsbara bildmallar som du kan använda med symbollagret. Mer information finns i dokumentet Så här använder du bildmallar .

Lägga till en linjetoning till en linje

Du kan använda en enskild linjefärg på en linje. Du kan också fylla en linje med en toning av färger för att visa övergången från ett linjesegment till nästa linjesegment. Till exempel kan linjetoningar användas för att representera ändringar över tid och avstånd, eller olika temperaturer över en ansluten rad med objekt. För att kunna tillämpa den här funktionen på en rad måste datakällan ha lineMetrics alternativet inställt på true, och sedan kan ett färgtoningsuttryck skickas till strokeColor alternativet för raden. Uttrycket för linjetoning måste referera till det ['line-progress'] datauttryck som exponerar de beräknade radmåtten för uttrycket.

Ett fullständigt funktionellt exempel som visar hur du använder en linjetoning på en rad på kartan finns i Linje med linjetoning i Azure Maps-exempel. Källkoden för det här exemplet finns i Line with Stroke Gradient source code (Rad med linjetoning) källkod.

En skärmbild som visar en linje med en linjetoning på kartan.

Anpassa ett linjeskikt

Linjeskiktet har flera formatalternativ. Ett fullständigt funktionellt exempel som interaktivt visar linjealternativen finns i Alternativ för linjeskikt i Azure Maps-exempel. Källkoden för det här exemplet finns i Källkod för radlageralternativ.

En skärmbild som visar exemplet linjeskiktsalternativ som visar hur de olika alternativen för linjeskiktet påverkar återgivningen.

Nästa steg

Läs mer om de klasser och metoder som används i den här artikeln:

I följande artiklar finns fler kodexempel att lägga till i dina kartor: