Haritaya çokgen katman ekleme (Android SDK)

Bu makalede, çokgen bir katman kullanarak haritadaki ve MultiPolygon özellik geometrilerinin Polygon alanlarının nasıl işlenmeleri gösterilmektedir.

Not

Android SDK'sı kullanımdan kaldırılmasını Azure Haritalar

Android için Azure Haritalar Yerel SDK artık kullanım dışıdır ve 31/3/25 tarihinde kullanımdan kaldırılacaktır. Hizmet kesintilerini önlemek için 31.03.25'e kadar Azure Haritalar Web SDK'sına geçin. Daha fazla bilgi için bkz. Android SDK geçiş kılavuzu Azure Haritalar.

Önkoşullar

Hızlı Başlangıç: Android uygulaması oluşturma belgesindeki adımları tamamladığınızdan emin olun. Bu makaledeki kod blokları haritalar onReady olay işleyicisine eklenebilir.

Çokgen katman kullanma

Bir çokgen katmanı bir veri kaynağına bağlanıp haritaya yüklendiğinde, alanı ve MultiPolygon özellikleriyle Polygon işler. Çokgen oluşturmak için bunu bir veri kaynağına ekleyin ve sınıfını kullanarak çokgen bir katmanla işleyin PolygonLayer .

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

//Create a rectangular polygon.
source.add(Polygon.fromLngLats(
    Arrays.asList(
        Arrays.asList(
            Point.fromLngLat(-73.98235, 40.76799),
            Point.fromLngLat(-73.95785, 40.80044),
            Point.fromLngLat(-73.94928, 40.79680),
            Point.fromLngLat(-73.97317, 40.76437),
            Point.fromLngLat(-73.98235, 40.76799)
        )
    )
));

//Create and add a polygon layer to render the polygon on the map, below the label layer.
map.layers.add(new PolygonLayer(source, 
    fillColor("red"),
    fillOpacity(0.7f)
), "labels");
//Create a data source and add it to the map.
val source = DataSource()
map.sources.add(source)

//Create a rectangular polygon.
source.add(
    Polygon.fromLngLats(
        Arrays.asList(
            Arrays.asList(
                Point.fromLngLat(-73.98235, 40.76799),
                Point.fromLngLat(-73.95785, 40.80044),
                Point.fromLngLat(-73.94928, 40.79680),
                Point.fromLngLat(-73.97317, 40.76437),
                Point.fromLngLat(-73.98235, 40.76799)
            )
        )
    )
)

//Create and add a polygon layer to render the polygon on the map, below the label layer.
map.layers.add(
    PolygonLayer(
        source,
        fillColor("red"),
        fillOpacity(0.7f)
    ), "labels"
)

Aşağıdaki ekran görüntüsünde, çokgen katmanı kullanarak bir çokgenin alanını işlemeye ilişkin yukarıdaki kod gösterilmektedir.

Dolgu alanının işlendiği çokgen

Çokgen ve çizgi katmanını birlikte kullanma

Çizgi katmanı, çokgenlerin ana hatlarını işlemek için kullanılır. Aşağıdaki kod örneği, önceki örnekte olduğu gibi çokgen oluşturur, ancak şimdi bir çizgi katmanı ekler. Bu çizgi katmanı, veri kaynağına bağlı ikinci bir katmandır.

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

//Create a rectangular polygon.
source.add(Polygon.fromLngLats(
    Arrays.asList(
        Arrays.asList(
            Point.fromLngLat(-73.98235, 40.76799),
            Point.fromLngLat(-73.95785, 40.80044),
            Point.fromLngLat(-73.94928, 40.79680),
            Point.fromLngLat(-73.97317, 40.76437),
            Point.fromLngLat(-73.98235, 40.76799)
        )
    )
));

//Create and add a polygon layer to render the polygon on the map, below the label layer.
map.layers.add(new PolygonLayer(source,
    fillColor("rgba(0, 200, 200, 0.5)")
), "labels");

//Create and add a line layer to render the outline of the polygon.
map.layers.add(new LineLayer(source,
    strokeColor("red"),
    strokeWidth(2f)
));
//Create a data source and add it to the map.
val source = DataSource()
map.sources.add(source)

//Create a rectangular polygon.
source.add(
    Polygon.fromLngLats(
        Arrays.asList(
            Arrays.asList(
                Point.fromLngLat(-73.98235, 40.76799),
                Point.fromLngLat(-73.95785, 40.80044),
                Point.fromLngLat(-73.94928, 40.79680),
                Point.fromLngLat(-73.97317, 40.76437),
                Point.fromLngLat(-73.98235, 40.76799)
            )
        )
    )
)

//Create and add a polygon layer to render the polygon on the map, below the label layer.
map.layers.add(
    PolygonLayer(
        source,
        fillColor("rgba(0, 200, 200, 0.5)")
    ), "labels"
)

//Create and add a line layer to render the outline of the polygon.
map.layers.add(
    LineLayer(
        source,
        strokeColor("red"),
        strokeWidth(2f)
    )
)

Aşağıdaki ekran görüntüsünde, çizgi katmanı kullanılarak işlenen ana hattıyla çokgeni işleyen yukarıdaki kod gösterilmektedir.

Dolgu alanı ve ana hattı işlenmiş çokgen

İpucu

Çizgi katmanıyla bir çokgenin ana hatlarını oluştururken, her nokta dizisinin aynı başlangıç ve bitiş noktasına sahip olması için çokgenlerdeki tüm halkaları kapattığınızdan emin olun. Bu yapılmazsa, çizgi katmanı çokgenin son noktasını ilk noktaya bağlamayabilir.

Çokgeni desenle doldurma

Çokgeni bir renkle doldurmanın yanı sıra, çokgeni doldurmak için bir görüntü deseni de kullanabilirsiniz. Harita görüntüsü sprite kaynaklarına bir görüntü deseni yükleyin ve ardından bu görüntüye fillPattern çokgen katmanı seçeneğiyle başvurun.

//Load an image pattern into the map image sprite.
map.images.add("fill-checker-red", R.drawable.fill_checker_red);

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

//Create a polygon.
source.add(Polygon.fromLngLats(
    Arrays.asList(
        Arrays.asList(
            Point.fromLngLat(-50, -20),
            Point.fromLngLat(0, 40),
            Point.fromLngLat(50, -20),
            Point.fromLngLat(-50, -20)
        )
    )
));

//Create and add a polygon layer to render the polygon on the map, below the label layer.
map.layers.add(new PolygonLayer(source,
        fillPattern("fill-checker-red"),
        fillOpacity(0.5f)
), "labels");
//Load an image pattern into the map image sprite.
map.images.add("fill-checker-red", R.drawable.fill_checker_red)

//Create a data source and add it to the map.
val source = DataSource()
map.sources.add(source)

//Create a polygon.
source.add(
    Polygon.fromLngLats(
        Arrays.asList(
            Arrays.asList(
                Point.fromLngLat(-50, -20),
                Point.fromLngLat(0, 40),
                Point.fromLngLat(50, -20),
                Point.fromLngLat(-50, -20)
            )
        )
    )
)

//Create and add a polygon layer to render the polygon on the map, below the label layer.
map.layers.add(
    PolygonLayer(
        source,
        fillPattern("fill-checker-red"),
        fillOpacity(0.5f)
    ), "labels"
)

Bu örnek için aşağıdaki görüntü uygulamanın çizilebilir klasörüne yüklendi.

Mor ok simgesi resmi
fill-checker-red.png

Aşağıdaki görüntüde, yukarıdaki kodun harita üzerinde dolgu deseni olan bir çokgeni işlemesinin ekran görüntüsü yer alır.

Haritada işlenen dolgu deseni ile çokgen

Sonraki adımlar

Haritalarınıza eklenecek daha fazla kod örneği için aşağıdaki makalelere bakın: