Dela via


Lägg till ett polygonskikt på kartan

Den här artikeln visar hur du renderar områden i och MultiPolygon funktionsgeometrier på kartan med hjälp av Polygon ett polygonskikt. Azure Maps Web SDK stöder också skapandet av Cirkelgeometrier enligt definitionen i det utökade GeoJSON-schemat. Dessa cirklar omvandlas till polygoner när de återges på kartan. Alla funktionsgeometrier kan enkelt uppdateras när de omsluts med atlasen . Formklass .

Använda ett polygonskikt

När ett polygonlager är anslutet till en datakälla och läses in på kartan återges området med Polygon och MultiPolygon funktioner. Om du vill skapa en polygon lägger du till den i en datakälla och renderar den med ett polygonlager med hjälp av klassen PolygonLayer .

Följande exempelkod visar hur du skapar ett polygonlager som täcker New York Citys Central Park med en röd polygon.

 
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')
  });
}

En skärmbild av karta över New York City som visar polygonskiktet som täcker Central Park med fyllningsfärg inställd på rött och fyller Opacitet inställt på 0,7.

Använd ett polygon- och linjeskikt tillsammans

Ett linjeskikt används för att återge konturen av polygoner. Följande kodexempel återger en polygon som i föregående exempel, men lägger nu till ett linjeskikt. Det här linjeskiktet är ett andra lager som är anslutet till datakällan.

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])
  });
}

En skärmbild av en karta över New York City som visar ett mestadels transparent polygonskikt som täcker hela Central Park, kantad med en röd linje.

Fyll en polygon med ett mönster

Förutom att fylla en polygon med en färg kan du använda ett bildmönster för att fylla polygonen. Läs in ett bildmönster i mappningsbildens sprite-resurser och referera sedan till den fillPattern här bilden med egenskapen för polygonlagret.

Ett fullständigt funktionellt exempel som visar hur du använder en bildmall som fyllningsmönster i ett polygonlager finns i Fyll polygon med inbyggd ikonmall i Azure Maps-exempel. Källkoden för det här exemplet finns i Fyll polygon med inbyggd ikonmall källkod.

En skärmbild av en karta över världen med röda punkter som bildar en triangel i mitten av kartan.

Dricks

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

Anpassa ett polygonskikt

Polygonlagret har bara ett fåtal formatalternativ. Se exempelkartan Polygon Layer Options i Azure Maps-exempel för att prova dem. Källkoden för det här exemplet finns i Källkod för Polygon Layer Options.

En skärmbild av verktyget Polygon Layer Options.

Lägga till en cirkel på kartan

Azure Maps använder en utökad version av GeoJSON-schemat som tillhandahåller en definition för cirklar. En cirkel återges på kartan genom att en Point funktion skapas. Det här Point har en subType egenskap med värdet "Circle" och en radius egenskap med ett tal som representerar radien i meter.

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

Azure Maps Web SDK konverterar dessa Point funktioner till Polygon funktioner. Sedan återges dessa funktioner på kartan med hjälp av polygon- och linjeskikt enligt följande kodexempel.

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)'
    }));
  });
}

En skärmbild av en karta som visar en delvis transparent grön cirkel i New York City. Detta visar hur du lägger till en cirkel på en karta.

Gör en geometri lätt att uppdatera

En Shape klass omsluter en geometri eller funktion och gör det enkelt att uppdatera och underhålla dessa funktioner. Om du vill instansiera en formvariabel skickar du en geometri eller en uppsättning egenskaper till formkonstruktorn.

//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 });

Exemplet Gör en geometri lätt att uppdatera visar hur du omsluter ett GeoJSON-cirkelobjekt med en formklass. När värdet för radien ändras i formen återges cirkeln automatiskt på kartan. Källkoden för det här exemplet finns i Gör en geometri lätt att uppdatera källkoden.

En skärmbild av en karta som visar en röd cirkel i New York City med ett skjutreglage med rubriken Cirkelradie och när du skjuter fältet till höger eller vänster ändras radiens värde och cirkelstorleken justeras automatiskt på kartan.

Nästa steg

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

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

Fler resurser: