Şekiller

Platform seçin: Android iOS JavaScript

Katı kırmızı poli çizgisi içeren harita

Android için Google Haritalar API'si, haritalarınızı uygulamanız için özelleştirmek amacıyla haritalara şekil eklemenize olanak tanıyan bazı basit yöntemler sunar.

  • Polyline, istediğiniz şekli oluşturabilen ve haritadaki yolları ve rotaları işaretlemek için kullanılabilen bağlı bir dizi çizgi segmentidir.
  • Polygon, haritadaki alanları işaretlemek için kullanılabilen kapalı bir şekildir.
  • Circle, Dünya'nın yüzeyindeki bir dairenin haritaya coğrafi olarak doğru şekilde yansıtılmış halidir.

Bir dizi özelliği değiştirerek tüm bu şekillerin görünümlerini özelleştirebilirsiniz.

Kod örnekleri

Alanları ve rotaları temsil etmek için poligonlar ve çoklu çizgiler eklemeyle ilgili eğitim, basit bir Android uygulamasının tüm kodunu içerir.

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

Çoklu çizgiler

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

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

Poli çizgi oluşturmak için önce bir PolylineOptions nesnesi oluşturun ve bu nesneye noktalar ekleyin. Noktalar, dünyanın yüzeyindeki bir noktayı temsil eder ve LatLng nesnesi olarak ifade edilir. Çizgi segmentleri, noktalar arasında PolylineOptions nesnesine ekleme sırasına göre çizilir.

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

Ardından GoogleMap.addPolyline(PolylineOptions) işlevini çağırarak çoklu çizgiyi bir haritaya ekleyebilirsiniz. Bu yöntem, daha sonra polilini değiştirebileceğ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 çizgisiyle harita

Poli çizgisi eklendikten sonra şeklini değiştirmek için Polyline.setPoints() işlevini çağırabilir ve poli çizgisi için yeni bir nokta listesi sağlayabilirsiniz.

Çoklu çizginin görünümünü hem haritaya eklemeden önce hem de ekledikten 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.
  • Renk geçişli çoklu çizgiler, iki renkten oluşan bir renk geçişi kullanarak bir çoklu çizgiyi renklendirir.
  • Damgalanmış çoklu çizgiler, tekrarlanan bitmap'leri kullanarak bir çoklu çizginin stilini belirler.

Poli çizgi özelleştirmelerini kullanmak için Android için Haritalar SDK'sının 18.1.0 veya sonraki bir sürümünü kullanmanız ve Android için Haritalar SDK'sının en son oluşturma aracını kullanmanız gerekir.

Çok renkli bir çoklu çizgi oluşturma

Çok renkli bir çoklu çizgi içeren harita

StyleSpan nesneleri oluşturup addSpan() veya addSpans() yöntemlerini kullanarak PolylineOptions'a ekleyerek bir çok çizginin segmentlerini tek tek renklendirmek için aralıkları kullanabilirsiniz. Varsayılan olarak, dizideki her öğe karşılık gelen çizgi segmentinin rengini ayarlar. Aşağıdaki örnekte, kırmızı ve yeşil segmentler içeren bir çok ç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 poli çizgisi içeren harita

Bir degrade tanımlamak için iki 32 bit alfa-kırmızı-yeşil-mavi (ARGB) tam sayı belirterek çizginin başlangıç ve bitiş renklerini belirtebilirsiniz. PolylineOptions.addSpan() yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Aşağıdaki örnekte Woodland Park Hayvanat Bahçesi'nden Kirkland, WA'ya kırmızı-sarı gradyanlı bir çoklu çizgi oluşturulması 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())));

      

Damgalanmış poli çizgi oluşturma

Damgalanmış poli çizginin bulunduğu harita

Bir çoklu çizginin görünümünü, tekrarlanan bir bit eşlem dokusuna ayarlayabilirsiniz. Bunu yapmak için TextureStyle türünde bir StampStyle oluşturun, ardından burada gösterildiği gibi PolylineOptions.addSpan()'yi ç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

Poli çizgiler varsayılan olarak tıklanabilir değildir. Polyline.setClickable(boolean) öğesini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir bir çok çizgi üzerindeki tıklama etkinliklerini dinlemek için OnPolylineClickListener kullanın. Bu dinleyiciyi haritada ayarlamak için GoogleMap.setOnPolylineClickListener(OnPolylineClickListener) numaralı telefonu arayın. Kullanıcı bir çok çizgiyi tıkladığında onPolylineClick(Polyline) geri çağırma alırsınız.

Poligonlar

Polygon nesneleri, sıralı bir sırada bir dizi koordinattan oluşmaları nedeniyle Polyline nesnelerine benzer. Ancak poligonlar açık uçlu olmak yerine, iç kısmı doldurulmuş kapalı bir döngü içindeki bölgeleri tanımlayacak şekilde tasarlanmıştır.

Haritaya Polyline eklediğiniz gibi Polygon ekleyebilirsiniz. Önce bir PolygonOptions nesnesi oluşturun ve buna birkaç nokta ekleyin. Bu noktalar, poligonun ana hatlarını oluşturur. Daha sonra, GoogleMap.addPolygon(PolygonOptions) çağrısı yaparak çokgeni haritaya eklersiniz. Bu çağrı, bir Polygon nesnesi döndürür.

Aşağıdaki kod snippet'inde haritaya bir dikdörtgen eklenmektedir.

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

      

Poligon eklendikten sonra şeklini değiştirmek için Polygon.setPoints() işlevini çağırabilir ve poligonun ana hatları için yeni bir nokta listesi sağlayabilirsiniz.

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

Poligon otomatik tamamlama

Yukarıdaki örnekte verilen Poligon beş koordinattan oluşur ancak ilk ve son koordinatların aynı konumda 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ısı yapıldığında 4 noktanın tümü 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

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

Aynı alanda iki yol tanımlanmalıdır. İki bölgeden daha büyük olan, doldurma alanını tanımlar ve ek seçenekleri olmayan basit bir poligondur. Ardından, addHole() yöntemine ikinci bir yol iletin. Daha küçük olan ikinci yol, daha büyük yolun bir parçası olarak tamamen çevrili olduğunda, poligonun bir parçası kaldırılmış gibi görünür. Delik, poligonun ana hatlarıyla kesişiyorsa poligon doldurulmadan oluşturulur.

Aşağıdaki snippet, daha küçük dikdörtgen bir delik içeren 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));

      

Boş poligon, haritada aşağıdaki gibi görünür:

İçi boş dikdörtgen poli çizgisi içeren harita

Poligon etkinlikleri

Poligonlar varsayılan olarak tıklanabilir değildir. Polygon.setClickable(boolean) işlevini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir bir poligondaki tıklama etkinliklerini dinlemek için OnPolygonClickListener kullanın. Bu işleyiciyi haritaya ayarlamak için GoogleMap.setOnPolygonClickListener(OnPolygonClickListener) numaralı telefonu arayın. Kullanıcı bir poligonu tıkladığında onPolygonClick(Polygon) geri çağırma alırsınız.

Daireler

Daire içeren harita

Maps API, genel bir Polygon sınıfına ek olarak, Circle nesnelerinin oluşturulmasını basitleştirmek için bu nesnelere özel sınıflar da içerir.

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

  • LatLng olarak center.
  • radius metre.

Çember, Dünya yüzeyinde belirtilen center değerinden radius metre uzaktaki tüm noktaların kümesi olarak tanımlanır. Maps API tarafından kullanılan Mercator projeksiyonu, düz bir yüzeyde bir küreyi işlediği için küre, ekvatora yakın bir yerdeyken haritada neredeyse mükemmel bir daire olarak görünür ve daire ekvatorun uzağına gittikçe (ekranda) giderek daha az dairesel görünür.

Ekledikten sonra dairenin şeklini değiştirmek için Circle.setRadius() veya Circle.setCenter() işlevini çağırıp yeni değerler sağlayabilirsiniz.

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

Aşağıdaki kod snippet'i, bir CircleOptions nesnesi oluşturarak ve GoogleMap.addCircle(CircleOptions)'i ç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);

      

Etkinlikleri daire içine alma

Daireler varsayılan olarak tıklanabilir değildir. CircleOptions.clickable(boolean) ile GoogleMap.addCircle()'ü çağırarak veya Circle.setClickable(boolean)'yi çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir çevredeki etkinlikleri dinlemek için OnCircleClickListener kullanın. Bu dinleyiciyi haritada ayarlamak için GoogleMap.setOnCircleClickListener(OnCircleClickListener) numaralı telefonu arayın.

Kullanıcı bir daireyi tıkladığında aşağıdaki kod örneğinde gösterildiği gibi bir onCircleClick(Circle) geri çağırma 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ümü özelleştirme

Bir şeklin görünümünü hem haritaya eklenmeden önce (options nesnesinde istenen özelliği belirterek) hem de haritaya eklendikten sonra değiştirebilirsiniz. Şeklin mevcut durumuna kolayca erişebilmeniz için soyutlar tüm mülklerde de gösterilir.

Aşağıdaki snippet, Melbourne'dan Perth'e kadar 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&#39;dan Perth&#39;e çoklu çizgiyle harita

Not: Bunların çoğu açıklanan şekillerin herhangi birine uygulanabilir olsa da bazı özellikler belirli şekiller için anlamlı olmayabilir (ör. bir çok çizginin içi boş olduğundan dolgu rengi olamaz).

Fırça rengi

Çizgi rengi, şeklin çizgisinin 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 durumunda PolylineOptions.color()) çağrısını yaparak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmemişse varsayılan fırça rengi siyah olur (Color.BLACK).

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

Dolgu rengi

Dolgu rengi yalnızca poligonlar ve daireler için geçerlidir. İç kısmı tanımlanmadığından çoklu çizgiler için geçerli değildir. Bir poligon için, deliklerinin içindeki bölgeler poligonun iç kısmının bir parçası değildir ve dolgu rengi ayarlanırsa bu alanlar renklendirilmez.

Dolgu rengi, şeklin iç kısmının 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 şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmemişse varsayılan çizgi rengi şeffaftır (Color.TRANSPARENT).

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

Çizgi genişliği

Satır çizgisinin genişliği, piksel (px) cinsinden kayan nokta olarak. Harita yakınlaştırıldığında genişlik ölçeklendirilmez (yani bir şeklin tüm yakınlaştırma seviyelerinde aynı kalınlıkta çizgisi olur). *Options.strokeWidth() (veya çoklu çizgi için PolylineOptions.width()) işlevini çağırarak bu özelliği şeklin seçenek nesnesinde ayarlayın. Belirtilmemişse varsayılan fırça 10 pikseldir.

Şekil haritaya eklendikten sonra getStrokeWidth() (veya poli çizgi için getWidth()) çağrılarak çizgi kalınlığına erişilebilir ve setStrokeWidth() (setWidth() for a polyline) çağrılarak değiştirilebilir.

Çizgi deseni

Varsayılan çizgi deseni, çok çizgiler ve poligonların ve dairelerin ana hatları için düz bir çizgidir. PatternItem nesnelerinin her biri tire, nokta veya boşluk olacak şekilde özel bir çizgi deseni belirtebilirsiniz.

Aşağıdaki örnek, bir çoklu çizginin desenini, tekrarlanan bir nokta dizisi, ardından 20 piksel uzunluğunda bir boşluk, 30 piksel uzunluğunda bir kısa çizgi ve başka bir 20 piksellik boşluk olarak ayarlıyor.

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 köşedeki ilk desen öğesinden başlayarak çizgi boyunca tekrarlanır.

Eklem türleri

Poli çizgiler ve poligonların ana hatları için varsayılan sabit pah birleşim türünü değiştirmek üzere bir eğim veya yuvarlak JointType belirtebilirsiniz.

Aşağıdaki örnek, yuvarlak bir birleştirme türünü çoklu çizgiye uygulamaktadır:

Kotlin

polyline.jointType = JointType.ROUND

      

Java

polyline.setJointType(JointType.ROUND);

      

Bağlantı türü, hattaki iç kıvrımları etkiler. Satırda kısa çizgi içeren bir çizgi rengi deseni varsa kısa çizgi bir eklemin üzerine geldiğinde de eklem türü geçerli olur. Eklem türleri, her zaman dairesel olduğundan noktaları etkilemez.

Satır başlıkları

Bir çok çizginin her ucu için bir Cap stili belirtebilirsiniz. Seçenekler; kenarlı (varsayılan), kare, yuvarlak veya özel bitmap'tir. PolylineOptions.startCap ve PolylineOptions.endCap içinde stili ayarlayın veya uygun alıcı ve belirleyici yöntemlerini kullanın.

Aşağıdaki snippet, bir çok çizginin başlangıcında yuvarlak bir kapak belirtir.

Kotlin

polyline.startCap = RoundCap()

      

Java

polyline.setStartCap(new RoundCap());

      

Aşağıdaki snippet, bitiş resmi 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 bitmap kullandığınızda referans çizgi genişliğini piksel cinsinden belirtmeniz gerekir. API, bitmap'i buna göre ölçeklendirir. Referans çizgi genişliği, kapağın bitmap resmini tasarlarken resmin orijinal boyutunda kullandığınız çizgi genişliğidir. Varsayılan referans çizgisi genişliği 10 pikseldir. İpucu: Referans çizgi kalınlığını belirlemek için bitmap resminizi bir resim düzenleyicide %100 yakınlaştırmada açın ve çizgi kalınlığının resmin göreli genişliğini belirleyin.

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.

Geodez segmentleri

Geodez ayarının geçerli olduğu tek şekiller çoklu çizgiler ve poligonlardır. Bir segment koleksiyonu olarak tanımlanmadığından, daireler için geçerli değildir.

Geodezikler ayarı, çok çizginin/çokgenin art arda gelen köşeleri arasındaki çizgi segmentlerinin nasıl çizileceğini belirler. Jeodezik segmentler, Dünya yüzeyinde (küre) en kısa yolu izleyen ve genellikle Merkatör projeksiyonu olan bir haritada eğri çizgiler olarak görünen segmentlerdir. Jeodezik olmayan segmentler, harita üzerinde düz çizgiler olarak çizilir.

*Options.geodesic() çağrısı yaparak bu özelliği, şeklin seçenek nesnesinde ayarlayın. Burada true, segmentlerin coğrafi olarak çizilmesi gerektiğini ve false, segmentlerin düz çizgiler olarak çizilmesi gerektiğini belirtir. Belirtilmemişse varsayılan olarak jeodezik olmayan segmentler (false) kullanılır.

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

Z-endeksi

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

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

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

Görünürlük

Görünürlük, şeklin haritada çizilip çizilmeyeceğini belirtir. true, şeklin çizileceğini, false ise çizilmeyeceğini gösterir. Bu seçenek, bir şekli haritada geçici olarak göstermemenize olanak tanır. Şekli haritadan kalıcı olarak kaldırmak için söz konusu şekil üzerinde remove() işlevini çağırın.

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

Verileri bir şekille ilişkilendirme

Şeklin setTag() yöntemini kullanarak bir poli çizgi, poligon veya daire içeren rastgele bir veri nesnesini saklayabilir ve getTag() yöntemini kullanarak nesneyi alabilirsiniz. Örneğin, çoklu çizgiyle bir veri nesnesini depolamak için Polyline.setTag() yöntemini, veri nesnesini almak için de Polyline.getTag() çağrısını yapı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");

      

Şekillerle verileri depolamanın ve almanın yararlı olduğu bazı senaryo örneklerini burada bulabilirsiniz:

  • Uygulamanızda farklı şekil türleri olabilir ve kullanıcı bunları tıkladığında farklı şekilde işlem yapmak isteyebilirsiniz.
  • Benzersiz kayıt tanımlayıcıları olan bir sistemle arayüz oluşturabilirsiniz. Bu sistemde şekiller, sistemdeki belirli kayıtları temsil eder.
  • Şekil verileri, şeklin Z-endeksini belirleme önceliğini gösterebilir.