Ş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.

Tüm bu şekillerin görünümünü, bazı özellikleri değiştirerek özelleştirebilirsiniz.

Kod örnekleri

Alanları ve rotaları temsil etmek için poligon ve çoklu çizgi ekleme konulu eğitim, basit bir Android uygulamasının tüm kodunu içerir.

Ayrıca GitHub'daki ApiDemos deposu, şekillerin kullanımını ve özelliklerini 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 poli çizgileri 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ünya yüzeyindeki bir noktayı temsil eder ve LatLng nesnesi olarak ifade edilir. Çizgi segmentleri, PolylineOptions nesnesine ekleme sırasına göre noktalar arasında ç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 poli çizgisi içeren 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ümü ö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, bir çoklu çizgiyi iki renkten oluşan bir renk geçişi kullanarak renklendirir.
  • Damgalanmış çoklu çizgiler, tekrarlanan bitmap'leri kullanarak bir çoklu çizginin stilini belirler.

Ç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ü 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

Bir çok çizginin segmentlerini tek tek renklendirmek için StyleSpan nesneleri oluşturup addSpan() veya addSpans() yöntemlerini kullanarak PolylineOptions'a ekleyerek 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)));

      

Renk geçişli poli çizgisi 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() işlevini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Aşağıdaki örnekte, Woodland Park Hayvanat Bahçesi'nden Kirkland, Washington'a kadar kırmızıdan sarıya doğru degrade bir çoklu çizginin 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 çok çizginin görünümünü tekrarlanan bir bitmap dokusu olarak 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) işlevini ç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 şekilde Polygon ekleyebilirsiniz. Öncelikle bir PolygonOptions nesnesi oluşturun ve bu nesneye bazı noktalar ekleyin. Bu noktalar, poligonun ana hatlarını oluşturur. Ardından, Polygon nesnesi döndüren GoogleMap.addPolygon(PolygonOptions) işlevini çağırarak poligonu haritaya ekleyin.

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.

Poligonun 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.

Poligon otomatik tamamlama

Yukarıdaki örnekteki poligon beş koordinattan oluşur ancak ilk ve son koordinatların aynı konumda olduğu ve bu durumun döngüyü tanımladığına dikkat edin. 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

Birden fazla yol, doldurulmuş halkalar veya "halka çörekler" (poligonal alanların poligon içinde "adalar" olarak göründüğü) gibi karmaşık şekiller oluşturmak için 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. İkinci, daha küçük yol daha büyük yol tarafından tamamen çevrelendiğinde, 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 dinleyiciyi haritada 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:

  • center olarak LatLng.
  • radius metre.

Ardından, bir daire, Dünya'nın yüzeyinde, belirli bir center noktasından radius metre uzaklıktaki 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 nasıl oluşturduysa bu küre, ekvatora yakın bir yerdeyken haritada neredeyse mükemmel bir daire olarak görünür ve daire ekvatorun dışına doğru hareket ettikç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 bir dairedeki tıklama etkinliklerini dinlemek için OnCircleClickListener simgesini 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 tüm mülkler için alıcılara da erişilebilir.

Aşağıdaki snippet, Melbourne'dan Perth'e uzanan jeodezik segmentler içeren kalın bir mavi poli ç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;den Perth&#39;e giden bir çoklu çizginin yer aldığı 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 çizgi rengi siyahtır (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. Tanımlanmış iç alanları olmadığı için çoklu çizgiler için geçerli değildir. Bir poligonun boşluklarındaki bölgeler, poligonun iç kısmının bir parçası değildir ve doldurma rengi ayarlanırsa boyanmaz.

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

Şekil haritaya eklendikten sonra getFillColor() çağrısı yapılarak dolgu rengine erişilebilir ve setFillColor() çağrısı yapılarak dolgu rengi 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 çizgi kalınlığı 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. Her öğenin kısa çizgi, nokta veya boşluk olduğu PatternItem nesnelerinden oluşan özel bir çizgi kalıbı belirtebilirsiniz.

Aşağıdaki örnekte, bir çok çizginin deseni 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 ayarlanmıştı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öş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 örnekte, bir çok çizgiye yuvarlak bir eklem türü uygulanmaktadı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. Noktalar her zaman dairesel olduğundan eklem türleri 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. 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, bir çok çizginin başlangıcında yuvarlak bir kapak belirtir.

Kotlin



polyline.startCap = RoundCap()

      

Java


polyline.setStartCap(new RoundCap());

      

Aşağıdaki snippet, uç kapağı için özel bir bitmap 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, kapak için bitmap resmini tasarlarken resmin orijinal boyutunda kullandığınız çizgi genişliğidir. Varsayılan referans çizgi 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 boyutuna göre istediğiniz genişliğini çizin.

Bit eşlemeyi 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. Segmentler koleksiyonu olarak tanımlanmadıkları için 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. Geodez segmentler, dünyanın yüzeyinde (küre) en kısa yolu izleyen ve genellikle Mercator projeksiyonuna sahip bir haritada kavisli çizgiler olarak görünen segmentlerdir. Geodeziden olmayan segmentler haritada düz çizgiler olarak çizilir.

*Options.geodesic() işlevini çağırarak bu özelliği şeklin seçenek nesnesinde ayarlayı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ı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-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ı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ılarak z-dizin erişilebilir ve setZIndex() çağrılarak değiştirilebilir.

Görünürlük

Görünürlük, şeklin haritada çizilip çizilmeyeceğini belirtir. true çizileceğini, false ise çizilmeyeceğini gösterir. Bu seçenek, bir şekli haritada geçici olarak göstermemenize olanak tanır. Bir şekli haritadan kalıcı olarak kaldırmak için ilgili şekli remove() ile arayı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, bir veri nesnesini poli çizgiyle depolamak için Polyline.setTag(), veri nesnesini almak için 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 veri depolamak ve almak yararlı olduğu senaryolara dair bazı örnekleri aşağıda bulabilirsiniz:

  • Uygulamanızda farklı şekil türleri olabilir ve kullanıcı bunları tıkladığında farklı şekilde işlemek isteyebilirsiniz.
  • Benzersiz kayıt tanımlayıcıları olan bir sistemle arayüz oluşturmanız durumunda şekiller, söz konusu sistemdeki belirli kayıtları temsil eder.
  • Şekil verileri, şeklin z-endeksini belirlemek için bir öncelik belirtebilir.