Şekiller

Platform seçin: Android iOS JavaScript

Düz kırmızı çoklu çizgili harita

Android için Google Haritalar API'sı, uygulamanız için özelleştirmek amacıyla haritalarınıza şekil eklemenin bazı basit yollarını sunar.

  • Polyline, istediğiniz şekli oluşturabilen ve harita üzerinde 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, Dünya'nın yüzeyinde harita üzerinde çizilen bir dairenin coğrafi olarak doğru şekilde yapılan bir yansımasıdır.

Tüm bu şekillerin, birkaç özelliği değiştirerek görünümlerini özelleştirebilirsiniz.

Kod örnekleri

Alanları ve rotaları temsil etmek için poligonlar ve çoklu çizgiler ekleme eğiticisinde basit bir Android uygulamasına ait tüm kod yer almaktadır.

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

Çoklu çizgiler

Polyline sınıfı, harita üzerinde bir dizi bağlı çizgi segmenti tanımlar. Polyline nesnesi, bir LatLng konum grubundan oluşur ve bu konumları sıralı bir sırayla 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 gidecekleri yere ulaşmasına nasıl yardımcı olabileceğinizle ilgili fikirler sunulmaktadır.

Çoklu Ç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ı PolylineOptions nesnesine eklediğiniz sıraya göre noktalar arasında çizilir.

PolylineOptions nesnesine nokta eklemek için PolylineOptions.add() çağrısı yapın. Bu yöntemin aynı anda birden çok 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).

Daha sonra GoogleMap.addPolyline(PolylineOptions) yöntemini çağırarak çoklu çizgiyi bir 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, 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, harita üzerinde aşağıda gösterildiği gibi görünür:

Dikdörtgen çoklu çizgili harita

Çoklu çizginin şeklini ekledikten sonra 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 ayrıntı 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.
  • Gradyan çoklu çizgileri, iki renkten oluşan bir gradyan kullanarak bir çoklu çizgiyi renklendirir.
  • Sabitlenmiş çoklu çizgiler, tekrarlanan bit eşlemleri kullanarak ç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 oluşturucu için en yeni Haritalar SDK'sını kullanmanız gerekir.

Çok renkli çoklu çizgi oluşturma

Çok renkli çoklu çizgi içeren harita

Bir çoklu çizginin segmentlerini tek tek renklendirmek için StyleSpan nesneleri oluşturup addSpan() veya addSpans() yöntemlerini kullanarak bunları PolylineOptions öğesine ekleyerek kapsamları kullanabilirsiniz. Dizideki her öğe, varsayılan olarak karşılık gelen çizgi segmentinin rengini belirler. Aşağıdaki örnekte, kırmızı ve yeşil segmentleri olan bir çoklu çizgi oluşturmak için segment renklerini ayarlama işlemi 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 çizgisi oluşturma

Gradyan çoklu çizgisi olan harita

Fırçanın başlangıç ve bitiş renklerini belirtmek için iki adet 32 bit alfa-kırmızı-yeşil-mavi (ARGB) tam sayı belirterek 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ıdan sarıya gradyan bir çoklu çizgi oluşturma 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

Çoklu çizginin görünümünü tekrarlanan bit eşlem dokusu olarak ayarlayabilirsiniz. Bunu yapmak için TextureStyle içinde bir StampStyle oluşturun ve ardından burada gösterildiği gibi PolylineOptions.addSpan() yöntemini ç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) yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir çoklu çizgide tıklama etkinliklerini dinlemek için OnPolylineClickListener kullanın. Bu işleyiciyi haritada ayarlamak için GoogleMap.setOnPolylineClickListener(OnPolylineClickListener) numaralı telefonu arayın. Kullanıcı bir çoklu çizgiyi tıkladığında onPolylineClick(Polyline) geri arama alırsınız.

Poligonlar

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

Haritaya, Polyline eklediğiniz şekilde Polygon ekleyebilirsiniz. Öncelikle bir PolygonOptions nesnesi oluşturun ve bu nesneye birkaç nokta ekleyin. Bu noktalar çokgenin ana hattını oluşturacaktır. Daha sonra GoogleMap.addPolygon(PolygonOptions) çağrısı yaparak poligonu haritaya eklersiniz. Bu işlem, 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);

      

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

Poligonun görünümünü hem haritaya eklemeden önce hem de haritaya eklemeden sonra özelleştirebilirsiniz. Daha fazla ayrıntı 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, döngüyü tanımlayan aynı konumda olduğuna dikkat edin. Ancak pratikte, poligonlar kapalı alanları tanımladığından, bu son koordinatı tanımlamanıza gerek yoktur. Son koordinat ilk koordinattan farklıysa API, koordinat sırasının 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 nokta döndürülecektir.

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 "halkalar" (poligon içinde "adalar") 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 birleşiminden oluşur.

Aynı alanda iki yol tanımlanmalıdır. İki bölgenin daha büyük olanı, dolgu alanını tanımlar ve ek seçenek içermeyen basit bir poligondur. Daha sonra, addHole() yöntemine doğru ikinci bir yol geçirin. İkinci, daha küçük yol büyük yol tarafından tamamen çevrelendiğinde, poligonun bir parçası kaldırılmış gibi görünür. Delik, poligonun ana hattıyla 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));

      

İçi 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ıklanabilir değildir. Polygon.setClickable(boolean) yöntemini ç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 haritada ayarlamak için GoogleMap.setOnPolygonClickListener(OnPolygonClickListener) numaralı telefonu arayın. Kullanıcı bir poligonu tıkladığında onPolygonClick(Polygon) geri çağırması alırsınız.

Daireler

Daire içeren harita

Maps API, genel bir Polygon sınıfına ek olarak, yapısını basitleştirmek amacıyla Circle nesnelerine ilişkin özel sınıflar da içerir.

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

  • LatLng ile center.
  • radius metre cinsinden.

Daha sonra daire, Dünya yüzeyinde belirli bir center değerinden radius metre uzaklıktaki tüm noktaların kümesi olarak tanımlanır. Google Haritalar API'si tarafından kullanılan Mercator projeksiyonu, küre üzerinde düz bir yüzeyde oluşturduğundan, ekvatora yakın bir yerde olduğunda haritada neredeyse mükemmel bir daire olarak görünür ve ekvatordan uzaklaştıkça (ekranda) giderek daha dairesel biçimde görünmez.

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

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

Aşağıdaki kod snippet'i, 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, çevreler tıklanabilir değildir. CircleOptions.clickable(boolean) ile GoogleMap.addCircle() yöntemini ç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 işleyiciyi haritada 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 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ü, haritaya eklenmeden önce (seçenek nesnesinde istenen özelliği belirterek) veya haritaya eklendikten sonra değiştirebilirsiniz. Alıcılar, şeklin mevcut durumuna kolayca erişebilmeniz amacıyla tüm mülkler için de açığa çıkar.

Aşağıdaki snippet, Melbourne'dan Perth'e jeodezik segmentlere sahip 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, bir çoklu çizginin olduğu harita

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

Çizgi rengi

Fırça rengi, şeklin fırçasının opaklığını ve rengini belirten 32 bitlik alfa-kırmızı-yeşil-mavi (ARGB) bir tamsayıdır. *Options.strokeColor() (veya çoklu çizgide PolylineOptions.color()) çağrısı yaparak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmemişse varsayılan fırça rengi siyahtır (Color.BLACK).

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

Dolgu rengi

Dolgu rengi yalnızca poligonlar ve daireler için geçerlidir. Belirli iç kısımları olmadığından, çoklu çizgiler için geçerli değildir. Bir poligonda deliklerinin içindeki bölgeler poligonun iç kısmının parçası değildir ve dolgu rengi ayarlanırsa poligonun renklendirilmez.

Dolgu rengi, şeklin iç kısmının opaklığını ve rengini belirten 32 bit 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() işlevi çağrılarak erişilebilir ve setFillColor() işlevi çağrılarak değiştirilebilir.

Fırça genişliği

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

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

Çizgi deseni

Varsayılan çizgi deseni, çoklu çizgiler ve çokgenler ile dairelerin dış çizgileri için kesintisiz bir çizgidir. Her öğenin bir çizgi, nokta veya boşluk olduğu PatternItem nesneleri için özel bir çizgi deseni belirtebilirsiniz.

Aşağıdaki örnekte, bir çoklu çizginin deseni tekrar eden 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şluğa 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);

      

Kalıp, şekil için belirtilen ilk köşe noktasındaki ilk desen öğesinden başlayarak çizgi boyunca tekrarlanır.

Eklem türleri

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

Aşağıdaki örnekte, bir çoklu çizgiye yuvarlak bağlantı türü uygulanmaktadır:

Kotlin



polyline.jointType = JointType.ROUND

      

Java


polyline.setJointType(JointType.ROUND);

      

Bağlantı türü, hattaki iç bükülleri etkiler. Çizgide, içinde kısa çizgi bulunan bir fırça deseni varsa bir kısa çizgi bir eklemde durduğunda birleştirme türü de geçerli olur. Birleştirme türleri, her zaman dairesel olduklarından noktaları etkilemez.

Satır sınırları

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

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

Kotlin



polyline.startCap = RoundCap()

      

Java


polyline.setStartCap(new RoundCap());

      

Aşağıdaki snippet, bitiş sınırı 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 bit eşlem kullandığınızda referans çizgisi genişliğini piksel cinsinden belirtmeniz gerekir. API, bit eşlemi buna göre ölçeklendirir. Referans çizgi genişliği, resmin orijinal boyutunda başlık için bit eşlem resmini tasarlarken kullandığınız çizgi genişliğidir. Varsayılan referans çizgisi genişliği 10 pikseldir. İpucu: Referans çizgi 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 fırçası 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.

Jeodezik segmentler

Jeodezik ayar yalnızca çoklu çizgiler ve poligonlar için geçerlidir. Bu, bir segment koleksiyonu olarak tanımlanmadığından çevreler 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üzeyindeki en kısa yolu (küre) izleyen ve genellikle Merkatör projeksiyonuyla harita üzerinde eğri çizgiler halinde görünen segmentlerdir. Jeodezik olmayan segmentler harita üzerinde düz çizgiler olarak çizilir.

Şeklin seçenek nesnesinde bu özelliği ayarlamak için *Options.geodesic() yöntemini çağırın. Burada true, segmentlerin jeodezik olarak çizilmesi gerektiğini, false ise 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 setGeodesic() işlevi çağrılarak değiştirilebilir.

Z-endeksi

Z-endeksi, haritadaki diğer bindirmelere (diğer şekiller, zemin bindirmeleri ve karo bindirmeler) göre bu şeklin yığın sırasını belirtir. Yüksek Z-endeksine sahip bir bindirme, düşük z-endeksli bindirmelerin üzerinde çizilir. Aynı Z-endeksine sahip iki bindirme rastgele bir sırayla çizilir.

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

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

Görüş mesafesi

Görünürlük, şeklin haritada çizilip çizilmeyeceğini belirtir. Burada true şeklin çizilmesi gerektiğini, false ise çizilmemesi gerektiğini belirtir. Haritada geçici olarak şekil göstermemenize olanak tanır. Şekli haritadan kalıcı olarak kaldırmak için söz konusu şekilde remove() çağrısı yapın.

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

Verileri bir şekille ilişkilendirme

Şeklin setTag() yöntemini kullanarak çoklu çizgi, poligon veya daire içeren rastgele bir veri nesnesi depolayabilir ve getTag() kullanarak bu nesneyi alabilirsiniz. Örneğin, çoklu çizgi içeren bir veri nesnesini depolamak için Polyline.setTag() ve veri nesnesini almak için Polyline.getTag() çağrısı 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 veri depolamanın ve almanın kullanışlı olabileceği senaryolara ilişkin bazı örnekleri burada bulabilirsiniz:

  • Uygulamanız farklı türlerde şekillere hitap ediyor olabilir ve kullanıcı bunları tıkladığında bunlara farklı bir şekilde davranmak istersiniz.
  • Benzersiz kayıt tanımlayıcılarına sahip olan ve şekillerin sistemdeki belirli kayıtları temsil ettiği bir sistemle karşılaşıyor olabilirsiniz.
  • Şekil verileri, şeklin Z-endeksini belirleme önceliğini gösterebilir.