Şekiller

Platform seçin: Android iOS JavaScript

Kesintisiz kırmızı bir çoklu çizginin olduğu harita

Android için Google Haritalar API'si, haritalarınıza şekil eklemek ve bunları uygulamanız için özelleştirmek üzere kullanabileceğiniz bazı basit yollar sunar.

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

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

Kod örnekleri

Alanları ve rotaları temsil edecek poligonlar ve çoklu çizgiler ekleme eğiticisinde, basit bir Android uygulamasının tüm kodları bulunmaktadır.

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

Çoklu çizgiler

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

Bu videoda, harita üzerinde bir yol çizmek için çoklu çizgileri kullanarak kullanıcılarınızın gideceği yere nasıl gidileceğine ilişkin fikirler verilmektedir.

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

Bir PolylineOptions nesnesine nokta eklemek için PolylineOptions.add() işlevini çağırın. Bu yöntemin, aynı anda birden fazla nokta ekleyebilmeniz için değişken sayıda parametre aldığına dikkat edin (noktalar zaten bir listede yer alıyorsa PolylineOptions.addAll(Iterable<LatLng>) yöntemini de çağırabilirsiniz).

Ardından, GoogleMap.addPolyline(PolylineOptions) numaralı telefonu arayarak çoklu çizgiyi haritaya ekleyebilirsiniz. Yöntem, çoklu çizgiyi daha sonra değiştirebileceğiniz bir Polyline nesnesi döndürür.

Aşağıdaki kod snippet'inde, bir 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

Çoklu çizgi eklendikten sonra şeklini değiştirmek için Polyline.setPoints() yöntemini çağırarak ç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ştirmesi

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

  • Çok renkli çoklu çizgiler, çoklu çizgi segmentlerini farklı renklere ayarlar.
  • Gradyan çoklu çizgileri, iki renk gradyanı kullanarak bir çoklu çizgiyi renklendirir.
  • Dolgulu çoklu çizgiler, yinelenen bit eşlemleri kullanarak bir çoklu çizgiyi biçimlendirir.

Çoklu Çizgi Özelleştirmelerini kullanmak istiyorsanız 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 son sürümünü kullanmanız gerekir.

Çok renkli çoklu çizgi oluşturma

Çok renkli çoklu çizgi bulunan harita

StyleSpan nesneleri oluşturup addSpan() veya addSpans() yöntemlerini kullanarak bunları PolylineOptions içine ekleyerek bir çoklu çizginin segmentlerini ayrı ayrı renklendirmek için kapsamları kullanabilirsiniz. Varsayılan olarak, dizideki her öğe ilgili çizgi segmentinin rengini ayarlar. Aşağıdaki örnekte, kırmızı ve yeşil segmentli bir çoklu çizgi oluşturmak için segment renklerini ayarlama 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 çizgili harita

Çizginin başlangıç ve bitiş renklerini belirtmek için iki 32 bit alfa-kırmızı-yeşil-mavi (ARGB) tam sayısı belirterek bir renk geçişi tanımlayabilirsiniz. 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())));

      

Damgalı çoklu çizgi oluşturma

Damgalı çoklu çizgi bulunan harita

Bir çoklu çizginin görünümünü, tekrarlanan bir bit eşlem dokusuna ayarlayabilirsiniz. Bunu yapmak için StampStyle TextureStyle oluşturun, ardından burada gösterildiği gibi PolylineOptions.addSpan() çağırarak şeklin seçenekler nesnesinde bu özelliği 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) öğesini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir bir çoklu çizgideki etkinlikleri tıklamak için OnPolylineClickListener kullanın. Bu işleyiciyi haritaya ayarlamak için GoogleMap.setOnPolylineClickListener(OnPolylineClickListener) numaralı telefonu arayın. Kullanıcı bir çoklu çizgiyi tıkladığında onPolylineClick(Polyline) geri çağırma alırsınız.

Poligonlar

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

Haritaya Polyline ile aynı şekilde Polygon ekleyebilirsiniz. Önce bir PolygonOptions nesnesi oluşturun ve buna birkaç nokta ekleyin. Bu noktalar çokgenin ana hatlarını oluşturur. Daha sonra, GoogleMap.addPolygon(PolygonOptions) çağrısı yaparak çokgeni haritaya eklersiniz. Bu çağrı, 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);

      

Poligonun eklendikten sonra şeklini değiştirmek için Polygon.setPoints() komutunu çağırıp poligonun dış çizgisi 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ümleri ö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, poligonlar 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ı yapmak 4 noktanın tümünü döndürü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 çok, daha basit yolun bileşimidir.

Aynı alanda iki yolun tanımlanması gerekir. İki bölgenin daha büyük olanı, dolgu alanını tanımlar ve ek seçenek içermeyen 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 dış çizgisiyle kesişiyorsa poligon dolgu olmadan oluşturulur.

Aşağıdaki snippet, daha küçük bir dikdörtgen deliğe sahip 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ğıda gösterildiği gibi görünür:

İçi boş dikdörtgen çoklu çizgili harita

Poligon etkinlikleri

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

Tıklanabilir bir poligon üzerindeki etkinlikleri 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ı kolaylaştırmak amacıyla belirli sınıflar da içerir.

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

  • LatLng olarak center.
  • Metre cinsinden radius.

Ç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 Merkatör projeksiyonunun düz bir yüzey üzerinde bir küre oluşturma şekli nedeniyle, ekvatorun yakınına yerleştirildiğinde, harita üzerinde neredeyse mükemmel bir daire olarak görünecek ve çember ekvatordan uzaklaştıkça (ekranda) giderek daha dairesel olmayan bir şekilde görünecektir.

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

Daireyi 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ümleri özelleştirme bölümüne bakın.

Aşağıdaki kod snippet'i, bir CircleOptions nesnesi oluşturup GoogleMap.addCircle(CircleOptions) çağrısı yaparak 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. Tıklanabilirliği, CircleOptions.clickable(boolean) ile GoogleMap.addCircle() yöntemini çağırarak veya Circle.setClickable(boolean) yöntemini çağırarak etkinleştirebilir ve devre dışı bırakabilirsiniz.

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

Kullanıcı bir çevreyi tıkladığında aşağıdaki kod örneğinde gösterildiği gibi bir onCircleClick(Circle) geri çağırması 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 istediğiniz ö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ğıda gösterildiği gibi görünür:

Melbourne&#39;dan Perth&#39;e çoklu çizgiyle harita

Not: Bunların çoğu açıklanan şekillerin herhangi birine uygulanabilse de bazı özellikler belirli şekiller için anlamlı olmayabilir (ör. bir Çoklu çizginin iç kısmı olmadığından dolgu rengi olamaz).

Çizgi rengi

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

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

Dolgu rengi

Dolgu rengi yalnızca çokgenler 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 bir dolgu rengi ayarlanırsa 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 fırça 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.

Fırça genişliği

Çizgi fırçasının, kayan nokta olarak (piksel (piksel) genişliği) Harita yakınlaştırıldığında genişlik ölçeklenmez (yani bir şeklin çizgi genişliği tüm yakınlaştırma düzeylerinde aynı çizgi genişliğine sahip olur). *Options.strokeWidth() (veya çoklu çizgi için PolylineOptions.width()) çağrısı yaparak bu özelliği, şeklin seçenek nesnesinde ayarlayın. Belirtilmemişse varsayılan fırça 10 pikseldir.

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

Çizgi deseni

Varsayılan çizgi kalıbı, çoklu çizgiler için ve poligon ile dairelerin dış çizgileri için düz bir çizgidir. PatternItem nesnelerinden oluşan özel bir çizgi deseni belirleyebilirsiniz. Her öğe tire, nokta veya boşluk biçimindedir.

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

Çoklu çizgiler ve poligonların dış çizgileri için varsayılan sabit gönye birleştirme türünün yerine 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);

      

Birleşim türü, çizgideki iç kıvrımları etkiler. Çizgide tire içeren bir çizgi kalıbı varsa bir çizgi bir birleştiğin üzerinde durduğunda da birleştirme türü geçerli olur. Eklem türleri, her zaman dairesel olduğundan noktaları etkilemez.

Satır sınırları

Çoklu çizginin her ucu için bir Cap stili belirtebilirsiniz. Seçenekler pop-up (varsayılan), kare, yuvarlak veya özel bit eşlemdir. 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 çoklu çizginin başında yuvarlak bir sınır 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 bit eşlem kullandığınızda, piksel cinsinden bir referans çizgisi genişliği belirtmeniz gerekir. API bit eşlemi uygun şekilde ölçeklendirir. Referans fırçası genişliği, resmin orijinal boyutunda sınır için bit eşlem resmini tasarlarken kullandığınız fırça genişliğidir. Varsayılan referans çizgisi genişliği 10 pikseldir. İpucu: Referans çizgisinin genişliğini belirlemek için, bit eşlem resminizi bir resim düzenleyicide% 100 zumda açın ve resme göre, istediğiniz çizgi genişliğini ç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 poligonlar için geçerlidir. Bir segment koleksiyonu olarak tanımlanmadığından, daireler için geçerli değildir.

Jeodezik ayar, çoklu çizginin/poligonun ardışık 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ısı yapılarak jeodezik ayara erişilebilir ve ayar setGeodesic() çağrısı yapılarak değiştirilebilir.

Z-endeksi

Z-endeksi, haritadaki diğer bindirmelere (diğer şekiller, zemin bindirmeleri ve karo bindirmeleri) göre bu şeklin yığın sırasını belirtir. Yüksek Z-endeksine sahip bir bindirme, düşük Z-endeksine sahip yer paylaşımlarının üzerinde çizilir. Aynı Z-endeksine sahip iki bindirme, rastgele bir sırada ç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 üzerine çizildiğini unutmayın.

*Options.zIndex() yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmemişse varsayılan Z-endeksi 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 şekli çizilmesi gerektiğini, false şekli çizilmemesi gerektiğini belirtir. Bir şekli geçici olarak haritada görüntülememenize 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() yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmemişse varsayılan görünürlük true olur. Şekil haritaya eklendikten sonra, isVisible() çağrısı yapılarak görünürlüğe erişilebilir ve setVisible() çağrısı yapılarak değiştirilebilir.

Verileri bir şekille ilişkilendirme

Şeklin setTag() yöntemini kullanarak çoklu çizgi, poligon veya daire içeren rastgele bir veri nesnesini depolayabilir ve nesneyi getTag() kullanarak 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ı şekiller sunulabilir ve kullanıcı tarafından tıklandığında bu şekillere farklı bir şekilde davranılması gerekir.
  • Benzersiz kayıt tanımlayıcılarına sahip bir sistemle çalışıyor olabilirsiniz. Bu durumda şekiller, söz konusu sistemdeki belirli kayıtları temsil eder.
  • Şekil verileri, şeklin Z-endeksini belirleme önceliğini gösterebilir.