Şekiller

Platform seçin: Android iOS JavaScript

Düz kırmızı bir çoklu çizginin bulunduğu harita

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

  • Polyline, istediğiniz herhangi bir şekli oluşturabilen ve harita üzerinde yollar ile rotaları işaretlemek için kullanılabilecek 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 çizilen ve harita üzerinde çizilen bir dairenin coğrafi açıdan doğru bir projeksiyonudur.

Tüm bu şekillerin, bir dizi ö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ının tüm kodları 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ı, haritadaki bir dizi bağlı çizgi segmenti tanımlar. Bir Polyline nesnesi, bir dizi LatLng konumundan oluşur ve bu konumları sıralı bir sırayla 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 gittikleri yere ulaşmalarına nasıl yardımcı olabileceğiniz konusunda fikirler sunulmaktadır.

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

Bir PolylineOptions nesnesine nokta eklemek için PolylineOptions.add() çağrısı yapın. Bu yöntemin değişken sayıda parametre aldığına ve aynı anda birden fazla nokta ekleyebileceğinizi unutmayın (noktalar zaten bir listede bulunuyorsa 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, 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ğıda gösterildiği gibi görünür:

Dikdörtgen çoklu çizgili harita

Çoklu çizginin şeklini eklendikten 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 renkli gradyan kullanarak bir çoklu çizgiyi renklendirir.
  • Noktalı çoklu çizgiler, tekrarlanan bit eşlemleri kullanarak bir çoklu çizginin stilini belirleyin.

Polyline Özelleştirmelerini kullanmak istiyorsanız Android için Haritalar SDK'sının 18.1.0 veya sonraki bir sürümünü, Android için en yeni Haritalar SDK'sını kullanmanız gerekir.

Çok renkli çoklu çizgi oluşturma

Çok renkli çoklu çizgili harita

StyleSpan nesneleri oluşturup addSpan() veya addSpans() yöntemlerini kullanarak PolylineOptions öğesine ekleyerek bir çoklu çizginin segmentlerini tek tek renklendirmek için kapsamları kullanabilirsiniz. Varsayılan olarak, dizideki her öğe karşılık gelen çizgi segmentinin rengini belirler. Aşağıdaki örnekte, kırmızı ve yeşil segmentler içeren bir çoklu çizgi oluşturmak için segment renklerinin ayarlanması 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 çizgi içeren 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 bu özelliği şeklin seçenekler nesnesinde 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

Bir çoklu çizginin görünümünü tekrarlanan bit eşlem dokusu olarak ayarlayabilirsiniz. Bunu yapmak için TextureStyle için bir StampStyle oluşturun, 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ıklanabilir değildir. 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şmasıyla 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. İlk olarak bir PolygonOptions nesnesi oluşturun ve bu nesneye birkaç nokta ekleyin. Bu noktalar çokgenin dış çizgisini oluşturacaktır. Daha sonra GoogleMap.addPolygon(PolygonOptions) yöntemini çağırarak poligonu haritaya eklersiniz. Bu durumda, Polygon nesnesi döndürülür.

Aşağıdaki kod snippet'i, bir haritaya 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 dış çizgisi için yeni bir nokta listesi sağlayabilirsiniz.

Çokgeni hem haritaya eklemeden önce hem de haritaya eklendikten sonra görünümünü ö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 bulunan Poligon beş koordinattan oluşur, ancak ilk ve son koordinatların döngüyü tanımlayan aynı konumda olduğuna dikkat edin. Ancak pratikte, çokgenler kapalı alanları tanımladığından, bu son koordinatı tanımlamanıza gerek yoktur. Son koordinat ilkinden farklıysa API, ilk koordinatı koordinat dizisinin sonuna 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 da 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));

      

Boş çokgen oluşturma

Birden fazla yol, içi dolu halkalar veya "poğaçalar" (poligon içinde "adalar" olarak görünür) gibi karmaşık şekiller oluşturmak için tek bir Polygon nesnesinde birleştirilebilir. Karmaşık şekiller her zaman birden fazla basit yolun birleşimidir.

Aynı alanda iki yol tanımlanmalıdır. İki bölgeden büyük olanı dolgu alanını tanımlar ve ek seçenek sunmayan basit bir poligondur. Daha sonra, addHole() yöntemine ikinci bir yol geçirin. Daha küçük olan ikinci yol büyük yol tarafından tamamen çevrelendiğinde, poligonun bir parçası kaldırılmış gibi görünür. Delik, poligonun dış çizgisiyle kesişirse çokgen herhangi bir dolgu olmadan oluşturulur.

Aşağıdaki snippet, daha küçük bir dikdörtgen deliği olan 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ıklanabilir değildir. Polygon.setClickable(boolean) yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir 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

Daireli harita

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

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

  • LatLng olarak center.
  • radius metre cinsinden.

Daha sonra daire, Dünya üzerinde belirli bir center konumundan radius metre uzaklıkta bulunan tüm noktaların oluşturduğu küme olarak tanımlanır. Haritalar API'sı tarafından kullanılan Mercator projeksiyonu, düz bir yüzeyde bir küre oluşturduğundan, ekvatora yakın bir yerdeyken harita üzerinde neredeyse mükemmel bir daire olarak görünür ve daire ekvatordan uzaklaştıkça (ekranda) giderek daha dairesel biçimde görünmez.

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

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

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, daireler tıklanabilir değildir. GoogleMap.addCircle() yöntemini CircleOptions.clickable(boolean) ile çağırarak veya Circle.setClickable(boolean) yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.

Tıklanabilir daire üzerindeki tıklamaları dinlemek için OnCircleClickListener simgesini kullanın. Bu işleyiciyi haritada ayarlamak için GoogleMap.setOnCircleClickListener(OnCircleClickListener) numaralı telefonu arayın.

Bir 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ü, hem haritaya eklenmeden önce (seçenekler nesnesinde istediğiniz mülkü belirterek) hem de haritaya eklendikten sonra değiştirebilirsiniz. Şeklin mevcut durumuna kolayca erişebilmeniz için alıcılar da tüm mülkler için gösterilir.

Aşağıdaki snippet, Melbourne'den 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-Perth&#39;ten çoklu çizgili 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 bir alfa-kırmızı-yeşil-mavi (ARGB) 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 çoklu çizgi için getColor()) çağrısı yapılarak fırça 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ç 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 renklendirilmez.

Dolgu rengi, şeklin iç kısmının opaklığını ve rengini belirten 32 bitlik alfa-kırmızı-yeşil-mavi (ARGB) bir tamsayıdır. *Options.fillColor() yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmezse 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() işlevi çağrılıp değiştirilebilir.

Fırça genişliği

Çizgi fırçasının, piksel (piksel) cinsinden kayan reklam olarak genişliği. Harita yakınlaştırıldığında genişlik ölçeklenmez (yani bir şekil tüm yakınlaştırma düzeylerinde aynı fırça 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 getStrokeWidth() (veya çoklu çizgi için getWidth()) çağrısı yapılarak fırça genişliğine erişilebilir ve setStrokeWidth() (setWidth() for a polyline) çağırılarak değiştirilebilir.

Çizgi deseni

Varsayılan çizgi deseni, çoklu çizgiler ve poligonların ve dairelerin dış çizgileri için kesintisiz bir çizgidir. PatternItem nesneleri için özel bir çizgi deseni belirtebilirsiniz. Her öğe bir kısa çizgi, nokta veya boşluktur.

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 boşluk 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);

      

Desen, şekil için belirtilen ilk köşedeki ilk desen öğesinden başlayarak çizgi boyunca tekrarlanır.

Eklem türleri

Çoklu çizgiler ve poligon dış çizgilerinde, varsayılan sabit gönye birleştirme türünü değiştirmek için bir eğim veya yuvarlak JointType kullanabilirsiniz.

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

Kotlin



polyline.jointType = JointType.ROUND

      

Java


polyline.setJointType(JointType.ROUND);

      

Birleştirme türü, hattaki iç bükülleri etkiler. Çizgide, kısa çizgi içeren bir fırça deseni varsa bir kısa çizgi bir eklemin üzerinde durduğunda birleşim türü de geçerli olur. Her zaman dairesel olduklarından, birleştirme türleri noktaları etkilemez.

Çizgili büyük harf

Ç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. Stili PolylineOptions.startCap ve PolylineOptions.endCap içinde ayarlayın veya uygun alıcı ve belirleyici yöntemlerini kullanın.

Aşağıdaki snippet'te bir çoklu çizginin başında yuvarlak 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 piksel cinsinden bir referans çizgisi genişliği belirtmeniz gerekir. API, bit eşlemi uygun şekilde ölçeklendirir. Referans çizgi genişliği, başlık için bit eşlem resmini tasarlarken resmin orijinal boyutunda 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 yakınlaştırma düzeyinde açın ve resme göre istediğiniz çizgi çizgisi 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. Bir segment koleksiyonu olarak tanımlanmadıklarından çevreler için geçerli değildir.

Jeodezik ayar, bir çokgenin/poligonun ardışık tepe noktaları arasındaki çizgi segmentlerinin nasıl çizileceğini belirler. Jeodezik segmentler, Dünya yüzeyindeki en kısa yolu (bir küre) izleyen ve genellikle Mercator projeksiyonuyla harita üzerinde eğri çizgiler halinde görünen segmentlerdir. Jeodezik olmayan bölümler 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() çağrısı yapılarak değiştirilebilir.

Z-endeksi

Z-endeksi, haritadaki diğer yer paylaşımlarına (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-endeksine sahip bindirmelerin üzerine çizilir. Aynı Z-endeksine sahip iki bindirme rastgele bir sırayla ç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 bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmemişse varsayılan Z-endeksi 0'dir. Şekil haritaya eklendikten sonra Z-endeksine getZIndex() çağrısı yapılarak erişilebilir ve setZIndex() işlevi çağrılarak değiştirilebilir.

Görünürlük

Görünürlük, şeklin harita üzerinde çizilip çizilmeyeceğini belirtir. Burada true, çizilmesi gerektiğini, false ise çizilmemesi gerektiğini belirtir. Bu özellik, haritada geçici olarak bir şekil göstermemenize olanak tanır. Şekli haritadan kalıcı olarak kaldırmak için söz konusu şekilde 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ük 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 nesnesi depolayabilir ve bu nesneyi getTag() kullanarak geri alabilirsiniz. Örneğin, çoklu çizgiye sahip bir veri nesnesini depolamak için Polyline.setTag() ve veri nesnesini almak için Polyline.getTag() yöntemini çağırı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 yararlı olduğu senaryolara dair bazı örnekleri burada bulabilirsiniz:

  • Uygulamanız farklı şekil türlerine 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 bir sistemle çalışıyor olabilirsiniz. Şekiller, sistemdeki belirli kayıtları temsil eder.
  • Şekil verileri, şeklin Z-endeksini belirleme önceliğini gösterebilir.