Şekiller

Platform seçin: Android iOS JavaScript

Düz kırmızı çoklu çizgi içeren harita

Android için Google Maps API, uygulamanız için özelleştirmek üzere haritalarınıza şekil eklemenin bazı basit yollarını sunar.

  • Polyline, istediğiniz şekli oluşturabilen ve haritadaki yolları ve rotaları işaretlemek için kullanılabilen bir dizi bağlı çizgi segmentidir.
  • Polygon, haritadaki alanları işaretlemek için kullanılabilen kapalı bir şekildir.
  • Circle, harita üzerinde çizilen, Dünya yüzeyindeki bir dairenin coğrafi olarak doğru bir projeksiyonudur.

Tüm bu şekillerin görünümünü, çeşitli özellikleri değiştirerek özelleştirebilirsiniz.

Kod örnekleri

Alanları ve rotaları temsil etmek için poligon ve çoklu çizgi ekleme ile ilgili eğitim, basit bir Android uygulaması için gereken tüm kodları içerir.

Ayrıca GitHub'daki ApiDemos deposu, şekillerin ve özelliklerinin kullanımını gösteren örnekler içerir:

Çoklu çizgiler

Polyline sınıfı, haritadaki bir dizi bağlı çizgi segmentini tanımlar. Polyline nesnesi, bir dizi LatLng konumundan oluşur ve bu konumları sıralı bir şekilde birbirine bağlayan bir dizi çizgi segmenti oluşturur.

Bu videoda, harita üzerinde yol çizmek için çoklu çizgileri kullanarak kullanıcılarınızın gitmek istedikleri yere ulaşmalarına nasıl yardımcı olabileceğinizle ilgili fikirler verilmektedir.

Çoklu çizgi oluşturmak için önce bir PolylineOptions nesnesi oluşturun ve bu nesneye noktalar ekleyin. Noktalar, Dünya yüzeyindeki bir noktayı temsil eder ve LatLng nesnesi olarak ifade edilir. Çizgi segmentleri, noktalar arasında, noktaları PolylineOptions nesnesine eklediğiniz sıraya göre çizilir.

PolylineOptions nesnesine nokta eklemek için PolylineOptions.add() yöntemini çağırın. Bu yöntemin değişken sayıda parametre aldığını, böylece tek seferde birden fazla nokta ekleyebileceğinizi unutmayın (noktalar zaten bir listedeyse PolylineOptions.addAll(Iterable<LatLng>) yöntemini de çağırabilirsiniz).

Ardından, GoogleMap.addPolyline(PolylineOptions) yöntemini çağırarak çoklu çizgiyi haritaya ekleyebilirsiniz. Yöntem, daha sonra çoklu çizgiyi değiştirmek için kullanabileceğiniz bir Polyline nesnesi döndürür.

Aşağıdaki kod snippet'inde, haritaya nasıl dikdörtgen ekleneceği gösterilmektedir:

Kotlin

// Instantiates a new Polyline object and adds points to define a rectangle
val polylineOptions = PolylineOptions()
    .add(LatLng(37.35, -122.0))
    .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
    .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
    .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
    .add(LatLng(37.35, -122.0)) // Closes the polyline.

// Get back the mutable Polyline
val polyline = map.addPolyline(polylineOptions)

      

Java

// Instantiates a new Polyline object and adds points to define a rectangle
PolylineOptions polylineOptions =
        new PolylineOptions()
                .add(new LatLng(37.35, -122.0))
                .add(
                        new LatLng(
                                37.45,
                                -122.0)) // North of the previous point, but at the same
                // longitude
                .add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
                .add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
                .add(new LatLng(37.35, -122.0)); // Closes the polyline.

// Get back the mutable Polyline
Polyline polyline = map.addPolyline(polylineOptions);

      

Dikdörtgen, haritada aşağıdaki gibi görünür:

Dikdörtgen çoklu çizgi içeren harita

Çoklu çizgi eklendikten sonra şeklini değiştirmek için Polyline.setPoints() yöntemini çağırabilir ve çoklu çizgi için yeni bir nokta listesi sağlayabilirsiniz.

Çoklu çizginin görünümünü hem haritaya eklemeden önce hem de haritaya eklendikten sonra özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki görünümleri özelleştirme bölümüne bakın.

Çoklu çizgi özelleştirme

Çoklu çizgilerin görünümünü özelleştirmenin birkaç yolu vardır:

  • Çok renkli çoklu çizgiler, çoklu çizgi segmentlerini farklı renklere ayarlar.
  • Geçişli çoklu çizgiler, iki rengin geçişini kullanarak çoklu çizgiyi renklendirir.
  • Damgalı çoklu çizgiler, yinelenen bitmap'ler kullanarak çoklu çizgileri stillendirir.

Çoklu çizgi özelleştirmelerini kullanmak için Android için Haritalar SDK'sının 18.1.0 veya sonraki bir sürümünü ve Android için Haritalar SDK'sının en yeni oluşturucusunu kullanın.

Çok renkli çoklu çizgi oluşturma

Çok renkli çoklu çizgi içeren harita

StyleSpan nesneleri oluşturup addSpan() veya addSpans() yöntemlerini kullanarak bunları PolylineOptions öğesine ekleyerek çoklu çizginin segmentlerini ayrı ayrı renklendirmek için yayları kullanabilirsiniz. Varsayılan olarak, dizideki her öğe ilgili çizgi segmentinin rengini ayarlar. Aşağıdaki örnekte, kırmızı ve yeşil segmentlere sahip bir çoklu çizgi oluşturmak için segment renklerinin nasıl ayarlanacağı gösterilmektedir:

Kotlin

val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(StyleSpan(Color.RED))
        .addSpan(StyleSpan(Color.GREEN)),
)

      

Java

Polyline line =
        map.addPolyline(
                new PolylineOptions()
                        .add(
                                new LatLng(47.6677146, -122.3470447),
                                new LatLng(47.6442757, -122.2814693))
                        .addSpan(new StyleSpan(Color.RED))
                        .addSpan(new StyleSpan(Color.GREEN)));

      

Gradyan çoklu çizgi oluşturma

Gradyan çoklu çizgi içeren harita

Konturun başlangıç ve bitiş renklerini belirtmek için iki adet 32 bit alfa-kırmızı-yeşil-mavi (ARGB) tam sayı belirterek bir gradyan tanımlayabilirsiniz. PolylineOptions.addSpan() yöntemini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Aşağıdaki örnekte, Woodland Park Hayvanat Bahçesi'nden Kirkland, Washington'a kırmızıdan sarıya geçişli bir çoklu çizgi oluşturma işlemi gösterilmektedir.

Kotlin

val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(
            StyleSpan(
                StrokeStyle.gradientBuilder(
                    Color.RED,
                    Color.YELLOW,
                ).build(),
            ),
        ),
)

      

Java

Polyline line =
        map.addPolyline(
                new PolylineOptions()
                        .add(
                                new LatLng(47.6677146, -122.3470447),
                                new LatLng(47.6442757, -122.2814693))
                        .addSpan(
                                new StyleSpan(
                                        StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW)
                                                .build())));

      

Damgalı çoklu çizgi oluşturma

Damgalı çoklu çizgi içeren harita

Çoklu çizginin görünümünü, tekrarlanan bir bit eşlem dokusu olarak ayarlayabilirsiniz. Bunu yapmak için TextureStyle türünde bir StampStyle oluşturun, ardından burada gösterildiği gibi PolylineOptions.addSpan() yöntemini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın:

Kotlin

val stampStyle =
    TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build()
val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build())
map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(span),
)

      

Java

StampStyle stampStyle =
        TextureStyle.newBuilder(
                        BitmapDescriptorFactory.fromResource(R.drawable.walking_dot))
                .build();
StyleSpan span =
        new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build());
map.addPolyline(
        new PolylineOptions()
                .add(
                        new LatLng(47.6677146, -122.3470447),
                        new LatLng(47.6442757, -122.2814693))
                .addSpan(span));

      

Çoklu çizgi etkinlikleri

Varsayılan olarak çoklu çizgiler tıklanamaz. Polyline.setClickable(boolean) yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir bir çoklu çizgi üzerindeki tıklama etkinliklerini dinlemek için OnPolylineClickListener kullanın. Bu dinleyiciyi haritada ayarlamak için GoogleMap.setOnPolylineClickListener(OnPolylineClickListener) yöntemini çağırın. Kullanıcı bir çoklu çizgiyi tıkladığında onPolylineClick(Polyline) geri çağırma işlevi alırsınız.

Poligonlar

Polygon nesneleri, sıralı bir koordinat dizisinden oluşmaları bakımından Polyline nesnelerine benzer. Ancak çokgenler, açık uçlu olmak yerine kapalı bir döngü içindeki bölgeleri tanımlayacak ve içleri dolu olacak şekilde tasarlanmıştır.

Haritaya Polyline eklediğiniz şekilde Polygon da ekleyebilirsiniz. Öncelikle bir PolygonOptions nesnesi oluşturun ve bu nesneye birkaç nokta ekleyin. Bu noktalar, poligonun ana hatlarını oluşturur. Ardından, GoogleMap.addPolygon(PolygonOptions) yöntemini çağırarak poligonu haritaya eklersiniz. Bu yöntem, bir Polygon nesnesi döndürür.

Aşağıdaki kod snippet'i, haritaya bir dikdörtgen ekler.

Kotlin

// Instantiates a new Polygon object and adds points to define a rectangle
val rectOptions = PolygonOptions()
    .add(
        LatLng(37.35, -122.0),
        LatLng(37.45, -122.0),
        LatLng(37.45, -122.2),
        LatLng(37.35, -122.2),
        LatLng(37.35, -122.0),
    )

// Get back the mutable Polygon
val polygon = map.addPolygon(rectOptions)

      

Java

// Instantiates a new Polygon object and adds points to define a rectangle
PolygonOptions polygonOptions =
        new PolygonOptions()
                .add(
                        new LatLng(37.35, -122.0),
                        new LatLng(37.45, -122.0),
                        new LatLng(37.45, -122.2),
                        new LatLng(37.35, -122.2),
                        new LatLng(37.35, -122.0));

// Get back the mutable Polygon
Polygon polygon = map.addPolygon(polygonOptions);

      

Eklenen bir poligonun şeklini değiştirmek için Polygon.setPoints() yöntemini çağırabilir ve poligonun ana hattı için yeni bir nokta listesi sağlayabilirsiniz.

Çokgenin görünümünü hem haritaya eklemeden önce hem de haritaya ekledikten sonra özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki görünümleri özelleştirme bölümüne bakın.

Poligon otomatik tamamlama

Yukarıdaki örnekte yer alan poligon beş koordinattan oluşur ancak ilk ve son koordinatların aynı konum olduğuna dikkat edin. Bu, döngüyü tanımlar. Ancak pratikte, çokgenler kapalı alanları tanımladığından bu son koordinatı tanımlamanız gerekmez. Son koordinat ilk koordinattan farklıysa API, koordinat dizisinin sonuna ilk koordinatı ekleyerek poligonu otomatik olarak "kapatır".

Aşağıdaki iki poligon eşdeğerdir ve her biri için polygon.getPoints() çağrıldığında 4 noktanın tamamı döndürülür.

Kotlin

val polygon1 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(0.0, 0.0),
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE),
)
val polygon2 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE),
)

      

Java

Polygon polygon1 =
        map.addPolygon(
                new PolygonOptions()
                        .add(
                                new LatLng(0, 0),
                                new LatLng(0, 5),
                                new LatLng(3, 5),
                                new LatLng(0, 0))
                        .strokeColor(Color.RED)
                        .fillColor(Color.BLUE));

Polygon polygon2 =
        map.addPolygon(
                new PolygonOptions()
                        .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5))
                        .strokeColor(Color.RED)
                        .fillColor(Color.BLUE));

      

İçi boş poligon oluşturma

Dolgulu halkalar veya "simitler" (çokgen alanların çokgen içinde "adalar" olarak göründüğü) gibi karmaşık şekiller oluşturmak için birden fazla yol tek bir Polygon nesnesinde birleştirilebilir. Karmaşık şekiller her zaman birden fazla, daha basit yolun birleşiminden oluşur.

Aynı alanda iki yol tanımlanmalıdır. İki bölgeden daha büyük olanı, dolgu alanını tanımlar ve ek seçenekleri olmayan basit bir çokgendir. Ardından, addHole() yöntemine ikinci bir yol iletin. İkinci ve daha küçük olan yol, daha büyük olan yol tarafından tamamen çevrelendiğinde, çokgenin bir parçası kaldırılmış gibi görünür. Delik, poligonun dış çizgisiyle kesişirse poligon dolgusuz olarak oluşturulur.

Aşağıdaki snippet, daha küçük dikdörtgen bir deliği olan tek bir dikdörtgen oluşturur.

Kotlin

val hole = listOf(
    LatLng(1.0, 1.0),
    LatLng(1.0, 2.0),
    LatLng(2.0, 2.0),
    LatLng(2.0, 1.0),
    LatLng(1.0, 1.0),
)
val hollowPolygon = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(3.0, 0.0),
            LatLng(0.0, 0.0),
        )
        .addHole(hole)
        .fillColor(Color.BLUE),
)

      

Java

List<LatLng> hole =
        Arrays.asList(
                new LatLng(1, 1),
                new LatLng(1, 2),
                new LatLng(2, 2),
                new LatLng(2, 1),
                new LatLng(1, 1));
Polygon hollowPolygon =
        map.addPolygon(
                new PolygonOptions()
                        .add(
                                new LatLng(0, 0),
                                new LatLng(0, 5),
                                new LatLng(3, 5),
                                new LatLng(3, 0),
                                new LatLng(0, 0))
                        .addHole(hole)
                        .fillColor(Color.BLUE));

      

İçi boş poligon, haritada aşağıdaki gibi görünür:

İçi boş dikdörtgen çoklu çizgi içeren harita

Poligon etkinlikleri

Varsayılan olarak, çokgenler tıklanamaz. Polygon.setClickable(boolean) yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir bir poligon üzerindeki tıklama etkinliklerini dinlemek için OnPolygonClickListener kullanın. Bu dinleyiciyi haritada ayarlamak için GoogleMap.setOnPolygonClickListener(OnPolygonClickListener) yöntemini çağırın. Kullanıcı bir poligonu tıkladığında onPolygonClick(Polygon) geri çağırma işlevi alırsınız.

Daireler

Daire içeren harita

Maps API, genel bir Polygon sınıfının yanı sıra Circle nesnelerinin oluşturulmasını basitleştirmek için özel sınıflar da içerir.

Daire oluşturmak için aşağıdaki iki özelliği belirtmeniz gerekir:

  • center, LatLng olarak.
  • radius (metre cinsinden).

Ardından, Dünya yüzeyinde verilen center noktasından radius metre uzaklıktaki tüm noktaların kümesi olarak bir daire tanımlanır. Maps API tarafından kullanılan Mercator projeksiyonu, küreyi düz bir yüzeyde oluşturduğundan, ekvatora yakın bir konumda haritada neredeyse mükemmel bir daire olarak görünür ve daire ekvatordan uzaklaştıkça giderek daha az dairesel (ekranda) görünür.

Daire eklendikten sonra şeklini değiştirmek için Circle.setRadius() veya Circle.setCenter() yöntemini çağırıp yeni değerler sağlayabilirsiniz.

Dairenin görünümünü hem haritaya eklemeden önce hem de haritaya eklendikten sonra özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki görünümleri özelleştirme bölümüne bakın.

Aşağıdaki kod snippet'i, bir CircleOptions nesnesi oluşturup GoogleMap.addCircle(CircleOptions) yöntemini çağırarak haritaya bir daire ekler:

Kotlin

// Instantiates a new CircleOptions object and defines the center and radius
val circleOptions = CircleOptions()
    .center(LatLng(37.4, -122.1))
    .radius(1000.0) // In meters

// Get back the mutable Circle
val circle = map.addCircle(circleOptions)

      

Java

// Instantiates a new CircleOptions object and defines the center and radius
CircleOptions circleOptions =
        new CircleOptions().center(new LatLng(37.4, -122.1)).radius(1000); // In meters

// Get back the mutable Circle
Circle circle = map.addCircle(circleOptions);

      

Çevre etkinlikleri

Varsayılan olarak daireler tıklanamaz. GoogleMap.addCircle() yöntemini CircleOptions.clickable(boolean) ile çağırarak veya Circle.setClickable(boolean) yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir bir dairedeki tıklama etkinliklerini dinlemek için OnCircleClickListener kullanın. Bu dinleyiciyi haritada ayarlamak için GoogleMap.setOnCircleClickListener(OnCircleClickListener) yöntemini çağırın.

Kullanıcı bir daireyi tıkladığında aşağıdaki kod örneğinde gösterildiği gibi bir onCircleClick(Circle) geri çağırma işlevi alırsınız:

Kotlin

val circle = map.addCircle(
    CircleOptions()
        .center(LatLng(37.4, -122.1))
        .radius(1000.0)
        .strokeWidth(10f)
        .strokeColor(Color.GREEN)
        .fillColor(Color.argb(128, 255, 0, 0))
        .clickable(true),
)
map.setOnCircleClickListener {
    // Flip the r, g and b components of the circle's stroke color.
    val strokeColor = it.strokeColor xor 0x00ffffff
    it.strokeColor = strokeColor
}

      

Java

Circle circle =
        map.addCircle(
                new CircleOptions()
                        .center(new LatLng(37.4, -122.1))
                        .radius(1000)
                        .strokeWidth(10)
                        .strokeColor(Color.GREEN)
                        .fillColor(Color.argb(128, 255, 0, 0))
                        .clickable(true));

map.setOnCircleClickListener(
        new GoogleMap.OnCircleClickListener() {
            @Override
            public void onCircleClick(Circle circle) {
                // Flip the r, g and b components of the circle's stroke color.
                int strokeColor = circle.getStrokeColor() ^ 0x00ffffff;
                circle.setStrokeColor(strokeColor);
            }
        });

      

Görünümleri özelleştirme

Bir şeklin görünümünü hem haritaya eklenmeden önce (seçenekler nesnesinde istenen özelliği belirterek) hem de haritaya eklendikten sonra değiştirebilirsiniz. Şeklin mevcut durumuna kolayca erişebilmeniz için tüm özellikler için alıcılar da gösterilir.

Aşağıdaki snippet, Melbourne'den Perth'e jeodezik segmentler içeren kalın mavi bir çoklu çizgi ekler. Aşağıdaki bölümlerde bu özellikler daha ayrıntılı olarak açıklanmaktadır.

Kotlin

val polyline = map.addPolyline(
    PolylineOptions()
        .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
        .width(25f)
        .color(Color.BLUE)
        .geodesic(true),
)

      

Java

Polyline polyline =
        map.addPolyline(
                new PolylineOptions()
                        .add(
                                new LatLng(-37.81319, 144.96298),
                                new LatLng(-31.95285, 115.85734))
                        .width(25)
                        .color(Color.BLUE)
                        .geodesic(true));

      

Harita aşağıdaki gibi görünür:

Melbourne'den Perth'e çoklu çizgi içeren harita

Not: Bu özelliklerin çoğu, açıklanan şekillerin herhangi birine uygulanabilirken bazı özellikler belirli şekiller için anlamlı olmayabilir (ör. çoklu çizginin içi olmadığı için dolgu rengi olamaz).

Fırça rengi

Kontur rengi, şeklin konturunun opaklığını ve rengini belirten 32 bitlik bir alfa-kırmızı-yeşil-mavi (ARGB) tam sayıdır. *Options.strokeColor() (veya çoklu çizgi için PolylineOptions.color()) yöntemini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmezse varsayılan çizgi rengi siyahtır (Color.BLACK).

Şekil haritaya eklendikten sonra, getStrokeColor() (veya çoklu çizgi için getColor()) çağrılarak kontur rengine erişilebilir ve setStrokeColor() (setColor() for a polyline) çağrılarak değiştirilebilir.

Dolgu rengi

Dolgu rengi yalnızca çokgenler ve daireler için geçerlidir. İç kısımları tanımlanmadığı için çoklu çizgiler için geçerli değildir. Bir poligonun deliklerinin içindeki bölgeler, poligonun iç kısmına dahil değildir ve dolgu rengi ayarlanmışsa renklendirilmez.

Dolgu rengi, şeklin içinin opaklığını ve rengini belirten 32 bitlik bir alfa-kırmızı-yeşil-mavi (ARGB) tam sayıdır. *Options.fillColor() yöntemini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmezse varsayılan kontur rengi şeffaf (Color.TRANSPARENT) olur.

Şekil haritaya eklendikten sonra, getFillColor() çağrılarak dolgu rengine erişilebilir ve setFillColor() çağrılarak dolgu rengi değiştirilebilir.

Çizgi genişliği

Çizginin genişliği, piksel (px) cinsinden kayan nokta olarak ifade edilir. Harita yakınlaştırıldığında genişlik ölçeklendirilmez (yani bir şekil, tüm yakınlaştırma seviyelerinde aynı çizgi genişliğine sahip olur). Bu özelliği, şeklin seçenek nesnesinde *Options.strokeWidth() (veya çoklu çizgi için PolylineOptions.width()) yöntemini çağırarak ayarlayın. Belirtilmezse varsayılan kontur genişliği 10 pikseldir.

Şekil haritaya eklendikten sonra, getStrokeWidth() (veya çoklu çizgi için getWidth()) çağrılarak kontur genişliğine erişilebilir ve setStrokeWidth() (setWidth() for a polyline) çağrılarak değiştirilebilir.

Çizgi deseni

Varsayılan kontur deseni, çoklu çizgiler ve çokgenler ile dairelerin ana hatları için düz çizgidir. PatternItem nesnelerinden oluşan özel bir çizgi deseni belirtebilirsiniz. Her öğe bir çizgi, nokta veya boşluktur.

Aşağıdaki örnekte, bir çoklu çizginin deseni, tekrarlanan bir nokta dizisi, ardından 20 piksel uzunluğunda bir boşluk, 30 piksel uzunluğunda bir çizgi ve 20 piksellik başka bir boşluk olarak ayarlanmaktadır.

Kotlin

val pattern = listOf(
    Dot(),
    Gap(20F),
    Dash(30F),
    Gap(20F),
)
polyline?.pattern = pattern

      

Java

List<PatternItem> pattern =
        Arrays.asList(new Dot(), new Gap(20), new Dash(30), new Gap(20));
polyline.setPattern(pattern);

      

Desen, şekil için belirtilen ilk tepe noktasındaki ilk desen öğesinden başlayarak çizgi boyunca tekrarlanır.

Eklem türleri

Çoklu çizgiler ve poligonların dış hatları için varsayılan sabit gönye eklem türünü değiştirmek üzere eğim veya yuvarlak JointType belirtebilirsiniz.

Aşağıdaki örnekte, çoklu çizgiye yuvarlak birleşim türü uygulanmaktadır:

Kotlin

polyline?.jointType = JointType.ROUND

      

Java

polyline.setJointType(JointType.ROUND);

      

Eklem türü, çizgideki iç bükümleri etkiler. Çizgide kısa çizgiler içeren bir kontur deseni varsa bağlantı türü, kısa çizgi bir bağlantıyı kestiğinde de geçerli olur. Noktalar her zaman dairesel olduğundan birleşim türleri noktaları etkilemez.

Çizgi başlıkları

Çoklu çizginin her bir ucu için bir Cap stili belirtebilirsiniz. Seçenekler şunlardır: düz (varsayılan), kare, yuvarlak veya özel bit eşlem. Stili PolylineOptions.startCap ve PolylineOptions.endCap içinde ayarlayın veya uygun alıcı ve ayarlayıcı yöntemlerini kullanın.

Aşağıdaki snippet, çoklu çizginin başında yuvarlak bir başlık belirtir.

Kotlin

polyline?.startCap = RoundCap()

      

Java

polyline.setStartCap(new RoundCap());

      

Aşağıdaki snippet, bitiş kapağı için özel bir bit eşlem belirtir:

Kotlin

polyline?.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)

      

Java

polyline.setEndCap(
        new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));

      

Özel bir bit eşlem kullandığınızda piksel cinsinden bir referans çizgi genişliği belirtmeniz gerekir. API, bit eşlemi buna göre ölçeklendirir. Referans kontur genişliği, başlık için bitmap resmi tasarlarken resmin orijinal boyutunda kullandığınız kontur genişliğidir. Varsayılan referans kontur genişliği 10 pikseldir. İpucu: Referans kontur genişliğini belirlemek için bitmap resminizi bir resim düzenleyicide %100 yakınlaştırmayla açın ve çizgi konturunun istediğiniz genişliğini resme göre çizin.

Bit eşlemi oluşturmak için BitmapDescriptorFactory.fromResource() kullanıyorsanız yoğunluktan bağımsız bir kaynak (nodpi) kullandığınızdan emin olun.

Jeodezik segmentler

Jeodezik ayarı yalnızca çoklu çizgiler ve çokgenler için geçerlidir. Çevreler, segment koleksiyonu olarak tanımlanmadığından bu kural çevreler için geçerli değildir.

Jeodezik ayarı, çoklu çizginin/çokgenin ardışık köşeleri arasındaki çizgi segmentlerinin nasıl çizileceğini belirler. Jeodezik segmentler, Dünya yüzeyi (küre) boyunca en kısa yolu izleyen ve genellikle Mercator projeksiyonlu bir haritada eğri çizgiler olarak görünen segmentlerdir. Jeodezik olmayan segmentler haritada düz çizgiler olarak çizilir.

Bu özelliği, şeklin seçenek nesnesinde *Options.geodesic() yöntemini çağırarak ayarlayın. Burada true, segmentlerin jeodezik olarak çizilmesi gerektiğini, false ise segmentlerin düz çizgiler olarak çizilmesi gerektiğini belirtir. Belirtilmezse varsayılan olarak jeodezik olmayan segmentler (false) kullanılır.

Şekil haritaya eklendikten sonra, jeodezik ayara isGeodesic() çağrılarak erişilebilir ve setGeodesic() çağrılarak değiştirilebilir.

Z-endeksi

Z-endeksi, bu şeklin haritadaki diğer yer paylaşımlarına (diğer şekiller, yer yer paylaşımları ve karo yer paylaşımları) göre yığın sırasını belirtir. Yüksek z-endeksine sahip bir yer paylaşımı, daha düşük z-endeksine sahip yer paylaşımlarının üzerinde çizilir. Aynı z-endeksine sahip iki yer paylaşımı rastgele bir sırayla çizilir.

İşaretçilerin, diğer yer paylaşımlarının z-endeksinden bağımsız olarak her zaman diğer yer paylaşımlarının üzerinde çizildiğini unutmayın.

*Options.zIndex() yöntemini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmezse varsayılan z-endeksi 0 olur. Şekil haritaya eklendikten sonra, getZIndex() çağrılarak z-endeksine erişilebilir ve setZIndex() çağrılarak z-endeksi değiştirilebilir.

Görünürlük

Görünürlük, şeklin haritada çizilip çizilmeyeceğini belirtir. true çizilmesi gerektiğini, false ise çizilmemesi gerektiğini gösterir. Bu yöntem, bir şekli haritada geçici olarak gizlemenize olanak tanır. Şekli haritadan kalıcı olarak kaldırmak için ilgili şekil üzerinde remove() yöntemini çağırın.

*Options.visible() yöntemini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmezse varsayılan görünürlük true olur. Şekil haritaya eklendikten sonra, isVisible() çağrılarak görünürlüğe erişilebilir ve setVisible() çağrılarak görünürlük değiştirilebilir.

Verileri bir şekille ilişkilendirme

Şeklin setTag() yöntemini kullanarak rastgele bir veri nesnesini çoklu çizgi, poligon veya daire ile depolayabilir ve getTag() yöntemini kullanarak nesneyi alabilirsiniz. Örneğin, çoklu çizgi içeren bir veri nesnesini depolamak için Polyline.setTag() yöntemini, veri nesnesini almak için ise Polyline.getTag() yöntemini çağırın.

Aşağıdaki kod, belirtilen çoklu çizgi için rastgele bir etiket (A) tanımlar:

Kotlin

val polyline = map.addPolyline(
    PolylineOptions()
        .clickable(true)
        .add(
            LatLng(-35.016, 143.321),
            LatLng(-34.747, 145.592),
            LatLng(-34.364, 147.891),
            LatLng(-33.501, 150.217),
            LatLng(-32.306, 149.248),
            LatLng(-32.491, 147.309),
        ),
)
polyline?.tag = "A"

      

Java

Polyline polyline =
        map.addPolyline(
                (new PolylineOptions())
                        .clickable(true)
                        .add(
                                new LatLng(-35.016, 143.321),
                                new LatLng(-34.747, 145.592),
                                new LatLng(-34.364, 147.891),
                                new LatLng(-33.501, 150.217),
                                new LatLng(-32.306, 149.248),
                                new LatLng(-32.491, 147.309)));

polyline.setTag("A");

      

Verileri şekillerle depolamanın ve almanın yararlı olduğu senaryolara dair bazı örnekler aşağıda verilmiştir:

  • Uygulamanız farklı şekil türlerine hitap edebilir ve kullanıcı tıkladığında bunları farklı şekilde ele almak isteyebilirsiniz.
  • Benzersiz kayıt tanımlayıcıları olan bir sistemle etkileşim kuruyor olabilirsiniz. Bu sistemde şekiller belirli kayıtları temsil eder.
  • Şekil verileri, şeklin z-endeksini belirlemek için bir öncelik gösterebilir.