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

Tüm bu şekillerin görünümünü, bazı özellikleri değiştirerek ö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. 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.

Çoklu çizgi oluşturmak için önce bir PolylineOptions nesnesi oluşturun ve nesneye nokta ekleyin. Noktalar, dünya yüzeyindeki 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 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. 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 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 haritaya eklendikten 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, iki renkten oluşan bir renk geçişi kullanarak bir çoklu çizgiyi renklendirir.
  • Dolgulu çoklu çizgiler, yinelenen bit eşlemleri kullanarak bir çoklu çizgiyi biçimlendirir.

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

      

Renk geçişli poli çizgisi oluşturma

Gradyan poli çizgisi içeren 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() 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 ç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 işleyiciyi haritaya 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ırayla bir dizi koordinattan oluşması açısından 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. Ardından, Polygon nesnesi döndüren GoogleMap.addPolygon(PolygonOptions) işlevini çağırarak poligonu haritaya ekleyin.

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

      

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 ö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. İ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ğıda gösterildiği 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.

Dairenin eklendikten sonra şeklini değiştirmek için Circle.setRadius() veya Circle.setCenter() yöntemini ç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ü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 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ümleri ö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 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ğı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 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 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. 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, dolgu rengine getFillColor() çağrısı yapılarak erişilebilir ve setFillColor() çağrısı yapılarak değiştirilebilir.

Çizgi 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 ç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. PatternItem nesnelerinin her biri tire, nokta veya boşluk olacak şekilde özel bir çizgi deseni 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);

      

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. Ç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 başlıkları

Çoklu ç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 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 ç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 ç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.

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. Geodezitik 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ısı yapılarak jeodezik ayara erişilebilir ve ayar setGeodesic() çağrısı yapılarak 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 bindirme, 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-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. Bir şekli haritadan kalıcı olarak kaldırmak için ilgili şekli remove() tuşuyla 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ı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 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 veri depolamak ve almak yararlı olduğu bazı senaryo örneklerini aşağıda 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 belirlemek için bir öncelik belirtebilir.