Şekiller

Platform seçin: Android iOS JavaScript

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

Android için Google Maps API, şekil eklemeniz için bazı basit yollar sunmaktadır haritalarınıza eklemeniz gerekebilir.

  • Polyline, birbirine bağlı çizgi segmentleri serisidir. oluşturabilir ve haritada yolları ve rotaları işaretlemek için kullanılabilir.
  • Polygon, işaretlemek için kullanılabilecek kapalı bir şekildir alanları görebilirsiniz.
  • Circle, bir dairenin coğrafi olarak doğru bir projeksiyonudur Google Earth'ün yüzeyinde gösterilir.

Tüm bu şekillerin görünümlerini değiştirmek için sayısı.

Kod örnekleri

Proje bilgilerini alanları ve rotaları göstermek için poligonlar ve çoklu çizgiler Basit bir Android uygulamasına ait tüm kodu içerir.

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

Çoklu çizgiler

Polyline sınıfı, bir bağlı hat grubunu tanımlar ve segmentleri görebilirsiniz. Polyline nesnesi, LatLng konuma sahip olur ve toplamda, sıralı bir şekilde birbirine bağlayabilirsiniz.

Bu video, kullanıcılarınızın gidecekleri yere ulaşmak için kullanabilecekleri yol çizmek için çoklu çizgileri kullanma.

Çoklu çizgi oluşturmak için önce bir PolylineOptions oluşturun. ve nokta ekleyin. Noktalar dünyanın yüzeyindeki bir noktayı temsil eder. ve LatLng nesnesi olarak ifade edilir. Çizgi segmentleri çizilir noktaları, onları eklemek istediğiniz sıraya göre PolylineOptions nesnesini tanımlayın.

Bir PolylineOptions nesnesine nokta eklemek için PolylineOptions.add() işlevini çağırın. Bu yöntemin değişken sayıda parametre aldığına dikkat edin. Bu sayede aynı anda birden çok nokta ekleyin (ayrıca PolylineOptions.addAll(Iterable<LatLng>) numaralı telefonu da arayabilirsiniz (puanlar zaten bir listede varsa).

Ardından GoogleMap.addPolyline(PolylineOptions). İlgili içeriği oluşturmak için kullanılan yöntemi, çoklu çizgiyi belirli bir düzeyde değiştirebileceğiniz bir Polyline nesnesi döndürür daha sonra tekrar deneyin.

Aşağıdaki kod snippet'inde, bir haritaya nasıl dikdörtgen ekleneceği gösterilmektedir:

Kotlin



// Instantiates a new Polyline object and adds points to define a rectangle
val polylineOptions = PolylineOptions()
    .add(LatLng(37.35, -122.0))
    .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
    .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
    .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
    .add(LatLng(37.35, -122.0)) // Closes the polyline.

// Get back the mutable Polyline
val polyline = map.addPolyline(polylineOptions)

      

Java


// Instantiates a new Polyline object and adds points to define a rectangle
PolylineOptions polylineOptions = new PolylineOptions()
    .add(new LatLng(37.35, -122.0))
    .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
    .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
    .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
    .add(new LatLng(37.35, -122.0)); // Closes the polyline.

// Get back the mutable Polyline
Polyline polyline = map.addPolyline(polylineOptions);

      

Dikdörtgen, haritada aşağıdaki gibi görünür:

Dikdörtgen çoklu çizgisiyle harita

Çoklu çizginin şekli eklendikten sonra şeklini değiştirmek için şunları çağırabilirsiniz: Polyline.setPoints() ve çoklu çizgi için yeni noktaların listesini sağlayın.

Çoklu çizgiyi eklemeden önce hem çoklu çizginin görünümünü özelleştirebilirsiniz hem de eklenip eklenmediğini gösterir. Bu bölümde, görünümleri özelleştirme bölümüne göz atabilirsiniz.

Çoklu çizgi özelleştirmesi

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

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

Çoklu Çizgi Özelleştirmelerini kullanmak istiyorsanız Android ve Android için Haritalar SDK'sının 18.1.0 veya daha yeni bir sürümünü kullanıyor olmanız gerekir. Android oluşturucu için en yeni Haritalar SDK'sını kullanın.

Çok renkli çoklu çizgi oluşturma

Çok renkli çoklu çizgi bulunan harita

Bir çoklu çizginin bölümlerini ayrı ayrı renklendirmek için kapsamları kullanarak StyleSpan nesne oluşturup addSpan() kullanarak bunları PolylineOptions içine ekleme veya addSpans() yöntem. Varsayılan olarak, dizideki her öğe rengi belirler kaldırmanızı sağlar. Aşağıdaki örnekte ayar segmenti gösterilmektedir renklerini kullanarak kırmızı ve yeşil kesitlerden oluşan bir çoklu çizgi oluşturun:

Kotlin



val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(StyleSpan(Color.RED))
        .addSpan(StyleSpan(Color.GREEN))
)

      

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(Color.RED))
        .addSpan(new StyleSpan(Color.GREEN)));

      

Gradyan çoklu çizgi oluşturma

Gradyan çoklu çizgili harita

Renk geçişi tanımlamak için iki tane 32 bit alfa-kırmızı-yeşil-mavi (ARGB) fırçanın başlangıç ve bitiş renklerini belirtmek için tamsayılar. Bunu ayarla özelliğini PolylineOptions.addSpan() çağırarak şeklin seçenekler nesnesine ekleyin. Aşağıdaki örnekte, Woodland Park Hayvanat Bahçesi'nden Kirkland, Washington'a.

Kotlin



val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(
            StyleSpan(
                StrokeStyle.gradientBuilder(
                    Color.RED,
                    Color.YELLOW
                ).build()
            )
        )
)

      

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));

      

Damgalı çoklu çizgi oluşturma

Damgalı çoklu çizgi bulunan harita

Bir çoklu çizginin görünümünü, tekrarlanan bir bit eşlem dokusuna ayarlayabilirsiniz. Yapılacaklar TextureStyle için bir StampStyle oluşturun, ardından bu özelliği şeklin seçenekler nesnesini, burada gösterildiği gibi PolylineOptions.addSpan() çağrısıyla değiştirin:

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. Şunu etkinleştirebilir ve devre dışı bırakabilirsiniz: tıklanabilirlik için Polyline.setClickable(boolean) çağırın.

Şu işlemleri gerçekleştirmek için OnPolylineClickListener kullanın: tıklanabilir bir çoklu çizgide tıklama etkinliklerini dinleyebilir. Bu işleyiciyi haritaya ayarlamak için: GoogleMap.setOnPolylineClickListener(OnPolylineClickListener) numaralı telefonu arayın. Kullanıcı bir çoklu çizgiyi tıkladığında onPolylineClick(Polyline) geri arama.

Poligonlar

Polygon nesne, Polyline ile benzer sıralı olarak bir dizi koordinattan oluşan nesneler tıklayın. Ancak çokgenler, açık uçlu olmak yerine kapalı bir döngü içinde iç kısmı doldurulmuş şekilde bölgeleri tanımlamak

Aynı şekilde haritaya Polygon ekleyebilirsiniz Polyline. Önce bir PolygonOptions nesnesi oluşturun birkaç nokta ekleyin. Bu noktalar çokgenin ana hatlarını oluşturur. Daha sonra, çağırarak çokgeni haritaya ekleyebilirsiniz GoogleMap.addPolygon(PolygonOptions) 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 ekledikten sonra değiştirmek için şunu çağırabilirsiniz: Polygon.setPoints() ve ana hat için yeni bir nokta listesi sağlayın bir çizgi grafiğidir.

Çokgeni eklemeden önce çokgenin görünümünü özelleştirebilirsiniz. eklenip eklenmediğini gösterir. Bu bölümde, görünümleri özelleştirme bölümüne göz atabilirsiniz.

Poligon otomatik tamamlama

Yukarıdaki örnekte verilen Poligon beş koordinattan oluşur, ancak bu koordinatın ilk ve son koordinatlar, döngüyü tanımlayan aynı konumdadır. Ancak pratikte, çokgenler kapalı alanları tanımladığından, bu son koordinatı tanımlayın. Son koordinat ilk koordinattan farklıysa API otomatik olarak "kapatılır" ilk koordinatı ekleyerek çokgene koordinat dizisinin sonu.

Aşağıdaki iki çokgen eşdeğerdir ve Her biri için polygon.getPoints(), 4 puanın tamamını döndürür.

Kotlin



val polygon1 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(0.0, 0.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)
val polygon2 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)

      

Java


Polygon polygon1 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(0, 0))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

Polygon polygon2 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

      

İçi boş poligon oluşturma

Birden fazla yol, tek bir Polygon nesnesinde birleştirilebilir: doldurulmuş halkalar veya "çörekler" gibi karmaşık şekiller oluşturabilirsiniz. (burada poligonal alanları, çokgen içinde "adalar" olarak görünür). Karmaşık şekiller her zaman birleşimini ortaya çıkarıyor.

Aynı alanda iki yolun tanımlanması gerekir. İki bölgeden daha büyük olan dolgu alanını tanımlar ve hiçbir ek seçenek içermeyen basit bir poligondur. Ardından, addHole() yöntemine ikinci bir yol iletin. İkincisi, daha küçük yolu, daha büyük yolun bir parçası olarak görünürse, poligon kaldırıldı. Delik çokgenin dış çizgisiyle kesişiyorsa çokgen dolgu olmadan oluşturulur.

Aşağıdaki snippet, daha küçük bir dikdörtgen ile tek bir dikdörtgen oluşturur delik.

Kotlin



val hole = listOf(
    LatLng(1.0, 1.0),
    LatLng(1.0, 2.0),
    LatLng(2.0, 2.0),
    LatLng(2.0, 1.0),
    LatLng(1.0, 1.0)
)
val hollowPolygon = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(3.0, 0.0),
            LatLng(0.0, 0.0)
        )
        .addHole(hole)
        .fillColor(Color.BLUE)
)

      

Java


List<LatLng> hole = Arrays.asList(new LatLng(1, 1),
    new LatLng(1, 2),
    new LatLng(2, 2),
    new LatLng(2, 1),
    new LatLng(1, 1));
Polygon hollowPolygon = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(3, 0),
        new LatLng(0, 0))
    .addHole(hole)
    .fillColor(Color.BLUE));

      

Boş poligon, haritada aşağıda gösterildiği gibi görünür:

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

Poligon etkinlikleri

Varsayılan olarak, çokgenler tıklanamaz. Şunu etkinleştirebilir ve devre dışı bırakabilirsiniz: tıklanabilirlik için Polygon.setClickable(boolean) çağırın.

Şu işlemleri gerçekleştirmek için OnPolygonClickListener kullanın: tıklanabilir bir poligon üzerinde tıklama etkinliklerini dinleme Bu işleyiciyi haritaya ayarlamak için: GoogleMap.setOnPolygonClickListener(OnPolygonClickListener) numaralı telefonu arayın. Kullanıcı bir çokgeni tıkladığında, onPolygonClick(Polygon) geri arama.

Daireler

Daire içeren harita

Maps API, genel bir Polygon sınıfına ek olarak, aynı zamanda Circle nesne için sınıfları kullanarak oluşturma işlemini basitleştirdi.

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

  • LatLng olarak center.
  • Metre cinsinden radius.

Çember, Dünya yüzeyindeki tüm noktaların kümesi olarak tanımlanır ve belirtilen center hattından radius metre uzakta. Google Alışveriş'in Maps API tarafından kullanılan Merkatör projeksiyonu, düz bir yüzey üzerinde bir küre oluşturur, bu, şeklinde görünür ve dairesel olmayan biçimde (ekranda) gittikçe daha fazla ekvatordan uzaklaşıyor.

Daire eklendikten sonra şeklini değiştirmek için şunu arayabilirsiniz: Circle.setRadius() veya Circle.setCenter() oluşturup yeni değerler girin.

Daireyi eklemeden önce, dairenin görünümünü özelleştirebilirsiniz eklenip eklenmediğini gösterir. Bu bölümde, görünümleri özelleştirme bölümüne göz atabilirsiniz.

Aşağıdaki kod snippet'i CircleOptions nesnesi ve çağrısı GoogleMap.addCircle(CircleOptions):

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. Şunu etkinleştirebilir ve devre dışı bırakabilirsiniz: GoogleMap.addCircle() öğesini çağırarak tıklanabilirlik CircleOptions.clickable(boolean) veya şu numarayı arayın: Circle.setClickable(boolean).

Şu işlemleri gerçekleştirmek için OnCircleClickListener kullanın: tıklanabilir bir daire üzerindeki tıklama etkinliklerini dinleme. Bu işleyiciyi haritaya 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ı:

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

Şeklin görünümünü değiştirebilirsiniz her ikisi de haritaya eklenmeden önce (istenen özelliği belirterek) seçenek nesnesine) veya haritaya eklendikten sonra. Kazananlar Böylece mevcut mülklere kolayca erişebilmeniz için şeklin durumu.

Aşağıdaki snippet, Melbourne'dan Perth'e. Aşağıdaki bölümlerde bu özellikler daha ayrıntılı şekilde bolca fırsat sunuyor.

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, şekillerden herhangi biri, her sayfada farklı anlam ifade eder (ör. Çoklu çizginin dolgu rengi olamaz çünkü iç tasarımı yok).

Fırça rengi

Çizgi rengi, opaklığı ve rengi. Bu özelliği şeklin options nesnesini çağırarak *Options.strokeColor() (veya Çoklu çizgi durumunda PolylineOptions.color()). Belirtilmemişse varsayılan fırça rengi siyah (Color.BLACK).

Şekil haritaya eklendikten sonra, getStrokeColor() (veya çoklu çizgi için getColor()) çağrılıyor ve değiştirilebilir setStrokeColor() (setColor() for a polyline) numaralı telefonu arayarak.

Dolgu rengi

Dolgu rengi yalnızca çokgenler ve daireler için geçerlidir. Şunlar için geçerli değildir: iç alanları tanımlamadıkları için çoklu çizgileri. Bir poligon için, bölgeler çokgenin iç kısmının bir parçası değildir ve her bir kareyi bir dolgu rengi ayarlanmışsa renklendirilir.

Dolgu rengi, opaklığı ve rengi gösterir. Bu özelliği şeklin seçenekler nesnesini *Options.fillColor() çağırarak oluşturun. Belirtilmemişse varsayılan fırça rengi şeffaf (Color.TRANSPARENT).

Şekil haritaya eklendikten sonra, dolgu rengine getFillColor() aranıyor ve setFillColor() aranarak değiştirilebilir.

Çizgi genişliği

Çizginin genişliği (piksel cinsinden) (piksel). Harita yakınlaştırıldığında genişlik ölçeklenmez (yani bir şekil tüm yakınlaştırma düzeylerinde aynı çizgi genişliğinde olmalıdır). Bu özelliği şeklin *Options.strokeWidth() (veya PolylineOptions.width()) çağrısı yaparak seçenek nesnesini bir çoklu çizgi için). Belirtilmemişse varsayılan fırça 10 pikseldir.

Şekil haritaya eklendikten sonra, getStrokeWidth() (veya çoklu çizgi için getWidth()) çağrılıyor ve değiştirilebilir setStrokeWidth() (setWidth() for a polyline) numaralı telefonu arayarak.

Çizgi deseni

Varsayılan çizgi deseni, çoklu çizgiler için ve dış çizgileri için düz bir çizgidir çokgenler ve daireler. Şu kadar özel bir çizgi deseni belirtebilirsiniz: PatternItem nesne (her öğe bir tire, nokta veya nokta) fark edebilirsiniz.

Aşağıdaki örnek, bir çoklu çizginin kalıbını tekrarlanan bir bir nokta dizisi ve ardından 20 piksel uzunluğunda bir boşluk, bir kısa çizgi 30 piksel ve başka bir 20 piksel boşluk.

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, satır boyunca tekrarlanır ve Şekil için belirtilen ilk köşe.

Eklem türleri

Çoklu çizgiler ve poligonların dış çizgileri için bir eğim veya yuvarlak belirleyebilirsiniz Varsayılan sabit gönye bağlantı türünü değiştirmek için JointType.

Aşağıdaki örnek, yuvarlak bir birleştirme türünü çoklu çizgiye uygulamaktadır:

Kotlin



polyline.jointType = JointType.ROUND

      

Java


polyline.setJointType(JointType.ROUND);

      

Birleşim türü, çizgideki iç kıvrımları etkiler. Çizgide bir çizgi varsa bir çizgi içeren desen içeriyorsa bir tire işareti aynı olduğunda da elde etti. Eklem türleri, her zaman dairesel olduğundan noktaları etkilemez.

Satır sınırları

Çoklu çizginin her ucu için bir Cap stili belirtebilirsiniz. Seçenekler pop-up (varsayılan), kare, yuvarlak veya özel bit eşlemdir. PolylineOptions.startCap bölümünde stili ayarlayın ve PolylineOptions.endCap veya almanın ve ayarlamanın yöntemlerini kastediyoruz.

Aşağıdaki snippet, bir çoklu çizginin başında yuvarlak bir sınır belirtir.

Kotlin



polyline.startCap = RoundCap()

      

Java


polyline.setStartCap(new RoundCap());

      

Aşağıdaki snippet, bitiş resmi için özel bir bit eşlem belirtir:

Kotlin



polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)

      

Java


polyline.setEndCap(
    new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));

      

Özel bir bit eşlem kullandığınızda, piksel. API bit eşlemi uygun şekilde ölçeklendirir. Referans çizgisi genişliği: bit eşlem resmini tasarlarken kullandığınız fırça genişliğine göre resmin orijinal boyutunu değiştirebilirsiniz. Varsayılan referans çizgisi genişliği 10'dur piksel. İpucu: Referans çizgisi genişliğini belirlemek için şu adresten bit eşlem resminizi açın: Resim düzenleyicide% 100 yakınlaştırma yapın ve istediğiniz çizgi kalınlığını çizin bir değere sahip.

Şunu kullanıyorsanız: BitmapDescriptorFactory.fromResource() bit eşlem oluşturmak için yoğunluktan bağımsız bir kaynak kullandığınızdan emin olun (nodpi).

Jeodezik segmentler

Jeodezik ayar yalnızca çoklu çizgiler ve poligonlar için geçerlidir. Geçerli değil çevrelerine ekleyebilir, çünkü bunlar bir segment koleksiyonu olarak tanımlanmaz.

Jeodezik ayar, doğru çizginin ardışık ikile çoklu çizginin/poligonun köşeleri çizilir. Jeodezik segmentler, Dünya'nın yüzeyindeki (küre) en kısa yolu izler ve genellikle Merkatör projeksiyonu olan haritada eğri çizgiler olarak görünür. Jeodezik olmayan segmentler haritada düz çizgiler olarak çizilir.

Bu özelliği, şeklin seçenek nesnesinde şunu çağırarak ayarlayın: *Options.geodesic(); burada true, segmentlerin jeodezik ve false, segmentlerin düz çizgiler olarak çizilmesi gerektiğini belirtir. Belirtilmemişse varsayılan olarak jeodezik olmayan segmentler (false) kullanılır.

Şekil haritaya eklendikten sonra jeodezik ayara erişilebilir isGeodesic() numaralı telefonu arayarak ve setGeodesic() aranarak değiştirilebilir.

Z-endeksi

Z-endeksi, bu şeklin yığın sıralamasını diğerlere göre (diğer şekiller, zemin bindirmeleri ve karo yer paylaşımları) görebilirsiniz. Yüksek Z-endeksine sahip bir bindirme, düşük Z-endeksine sahip yer paylaşımlarının üzerinde çizilir. Aynı Z-endeksine sahip iki bindirme, rastgele bir sırada çizilir.

İşaretçilerin Z-endeksi

*Options.zIndex() yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmemişse varsayılan Z-endeksi 0 olur. Şekil Z-endeksine, getZIndex() aranıyor ve setZIndex() aranarak değiştirilebilir.

Görünürlük

Görünürlük, şeklin haritada çizilip çizilmeyeceğini (ör. true, çizilmesi gerektiğini, false ise çizilmemesi gerektiğini belirtir. Google haritada bir şekli geçici olarak görüntülememenize olanak tanır. Kalıcı olarak şekli haritadan kaldırmak için, söz konusu şekilde remove() yöntemini çağırın.

Bu özelliği, şeklin seçenekler nesnesinde şunu çağırarak ayarlayın: *Options.visible() Belirtilmemişse varsayılan görünürlük true olur. Şekil haritaya eklendikten sonra, isVisible() aranıyor ve setVisible() aranarak değiştirilebilir.

Verileri bir şekille ilişkilendirme

Çoklu çizgi, poligon veya daire içeren rastgele bir veri nesnesini depolayabilirsiniz şeklin setTag() yöntemini kullanarak, getTag() kullanarak da nesneyi alın. Örneğin, veri depolamak için Polyline.setTag() numaralı telefonu arayın bir çoklu çizgiyle nesne ve Polyline.getTag() çağrısı ile veri nesnesini getirir.

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

      

Aşağıda, verileri depolamanın ve almanın yararlı olduğu senaryolarla ilgili bazı örnekler verilmiştir şu şekillerle:

  • Uygulamanız farklı şekillere hitap ediyor olabilir ve bunları kullanmak istiyorsunuz farklı şekilde ele alacağız.
  • Benzersiz kayıt tanımlayıcıları olan bir sistemle çalışıyor olabilirsiniz. Burada şekiller sistemdeki belirli kayıtları temsil eder.
  • Şekil verileri, şekli.