Android için Google Haritalar API'sı, uygulamanız için özelleştirmek amacıyla haritalarınıza şekil eklemenin bazı basit yollarını sunar.
Polyline
, istediğiniz şekli oluşturabilen ve harita üzerinde yolları ve rotaları işaretlemek için kullanılabilen bir dizi bağlı çizgi segmentidir.Polygon
, haritadaki alanları işaretlemek için kullanılabilen kapalı bir şekildir.Circle
, Dünya'nın yüzeyinde harita üzerinde çizilen bir dairenin coğrafi olarak doğru şekilde yapılan bir yansımasıdır.
Tüm bu şekillerin, birkaç özelliği değiştirerek görünümlerini özelleştirebilirsiniz.
Kod örnekleri
Alanları ve rotaları temsil etmek için poligonlar ve çoklu çizgiler ekleme eğiticisinde basit bir Android uygulamasına ait tüm kod yer almaktadır.
Ayrıca, GitHub'daki ApiDemos deposu, şekillerin ve özelliklerinin kullanımını gösteren örnekler içerir:
- CircleDemoActivity (Java / Kotlin): Daire
- PolygonDemoActivity (Java / Kotlin): Poligon
- PolylineDemoActivity (Java / Kotlin): Polyline
Çoklu çizgiler
Polyline
sınıfı, harita üzerinde bir dizi bağlı çizgi segmenti tanımlar. Polyline
nesnesi, bir LatLng
konum grubundan oluşur ve bu konumları sıralı bir sırayla bağlayan bir dizi çizgi segmenti oluşturur.
Bu videoda, harita üzerinde yol çizmek için çoklu çizgileri kullanarak, kullanıcılarınızın gidecekleri yere ulaşmasına nasıl yardımcı olabileceğinizle ilgili fikirler sunulmaktadır.
Çoklu Çizgi oluşturmak için önce bir PolylineOptions
nesnesi oluşturun ve bu nesneye noktalar ekleyin. Noktalar, dünyanın yüzeyindeki bir noktayı temsil eder ve LatLng
nesnesi olarak ifade edilir. Çizgi segmentleri, noktaları PolylineOptions
nesnesine eklediğiniz sıraya göre noktalar arasında çizilir.
PolylineOptions
nesnesine nokta eklemek için PolylineOptions.add()
çağrısı yapın.
Bu yöntemin aynı anda birden çok nokta ekleyebilmeniz için değişken sayıda parametre aldığına dikkat edin (noktalar zaten bir listede yer alıyorsa PolylineOptions.addAll(Iterable<LatLng>)
yöntemini de çağırabilirsiniz).
Daha sonra GoogleMap.addPolyline(PolylineOptions)
yöntemini çağırarak çoklu çizgiyi bir haritaya ekleyebilirsiniz. Yöntem, çoklu çizgiyi daha sonra değiştirebileceğiniz bir Polyline
nesnesi döndürür.
Aşağıdaki kod snippet'inde, haritaya nasıl dikdörtgen ekleneceği gösterilmektedir:
Kotlin
// Instantiates a new Polyline object and adds points to define a rectangle val polylineOptions = PolylineOptions() .add(LatLng(37.35, -122.0)) .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(LatLng(37.35, -122.0)) // Closes the polyline. // Get back the mutable Polyline val polyline = map.addPolyline(polylineOptions)
Java
// Instantiates a new Polyline object and adds points to define a rectangle PolylineOptions polylineOptions = new PolylineOptions() .add(new LatLng(37.35, -122.0)) .add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(new LatLng(37.35, -122.0)); // Closes the polyline. // Get back the mutable Polyline Polyline polyline = map.addPolyline(polylineOptions);
Dikdörtgen, harita üzerinde aşağıda gösterildiği gibi görünür:
Çoklu çizginin şeklini ekledikten sonra değiştirmek için Polyline.setPoints()
yöntemini çağırabilir ve çoklu çizgi için yeni bir nokta listesi sağlayabilirsiniz.
Çoklu çizginin görünümünü, hem haritaya eklemeden önce hem de haritaya eklendikten sonra özelleştirebilirsiniz. Daha fazla ayrıntı için aşağıdaki görünümleri özelleştirme bölümüne bakın.
Çoklu çizgi özelleştirme
Çoklu çizgilerin görünümünü özelleştirmenin birkaç yolu vardır:
- Çok renkli çoklu çizgiler, çoklu çizgi segmentlerini farklı renklere ayarlar.
- Gradyan çoklu çizgileri, iki renkten oluşan bir gradyan kullanarak bir çoklu çizgiyi renklendirir.
- Sabitlenmiş çoklu çizgiler, tekrarlanan bit eşlemleri kullanarak çoklu çizgiyi biçimlendirir.
Çoklu Çizgi Özelleştirmelerini kullanmak istiyorsanız Android için Haritalar SDK'sının 18.1.0 veya sonraki bir sürümünü ve Android oluşturucu için en yeni Haritalar SDK'sını kullanmanız gerekir.
Çok renkli çoklu çizgi oluşturma
Bir çoklu çizginin segmentlerini tek tek renklendirmek için StyleSpan
nesneleri oluşturup addSpan()
veya addSpans()
yöntemlerini kullanarak bunları PolylineOptions
öğesine ekleyerek kapsamları kullanabilirsiniz. Dizideki her öğe, varsayılan olarak karşılık gelen
çizgi segmentinin rengini belirler. Aşağıdaki örnekte, kırmızı ve yeşil segmentleri olan bir çoklu çizgi oluşturmak için segment renklerini ayarlama işlemi gösterilmektedir:
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(StyleSpan(Color.RED)) .addSpan(StyleSpan(Color.GREEN)) )
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(Color.RED)) .addSpan(new StyleSpan(Color.GREEN)));
Gradyan çoklu çizgisi oluşturma
Fırçanın başlangıç ve bitiş renklerini belirtmek için iki adet 32 bit alfa-kırmızı-yeşil-mavi (ARGB) tam sayı belirterek renk geçişi tanımlayabilirsiniz. PolylineOptions.addSpan()
yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın.
Aşağıdaki örnekte, Woodland Park Hayvanat Bahçesi'nden Kirkland, WA'ya kırmızıdan sarıya gradyan bir çoklu çizgi oluşturma gösterilmektedir.
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan( StyleSpan( StrokeStyle.gradientBuilder( Color.RED, Color.YELLOW ).build() ) ) )
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));
Damgalı çoklu çizgi oluşturma
Çoklu çizginin görünümünü tekrarlanan bit eşlem dokusu olarak ayarlayabilirsiniz. Bunu yapmak için TextureStyle
içinde bir StampStyle
oluşturun ve ardından burada gösterildiği gibi PolylineOptions.addSpan()
yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın:
Kotlin
val stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build() val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()) map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(span) )
Java
StampStyle stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build(); StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()); map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(span));
Çoklu çizgi etkinlikleri
Varsayılan olarak, çoklu çizgiler tıklanamaz. Polyline.setClickable(boolean)
yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.
Tıklanabilir çoklu çizgide tıklama etkinliklerini dinlemek için OnPolylineClickListener
kullanın. Bu işleyiciyi haritada ayarlamak için
GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
numaralı telefonu arayın.
Kullanıcı bir çoklu çizgiyi tıkladığında onPolylineClick(Polyline)
geri arama alırsınız.
Poligonlar
Polygon
nesneleri, sıralı bir dizi koordinattan oluşmaları bakımından Polyline
nesnelerine benzer. Ancak poligonlar açık uçlu olmak yerine, iç kısmı doldurulmuş bir kapalı döngü içinde bölgeleri tanımlamak için tasarlanmıştır.
Haritaya, Polyline
eklediğiniz şekilde Polygon
ekleyebilirsiniz. Öncelikle bir PolygonOptions
nesnesi oluşturun ve bu nesneye birkaç nokta ekleyin. Bu noktalar çokgenin ana hattını oluşturacaktır.
Daha sonra GoogleMap.addPolygon(PolygonOptions)
çağrısı yaparak poligonu haritaya eklersiniz. Bu işlem, Polygon
nesnesi döndürür.
Aşağıdaki kod snippet'i haritaya bir dikdörtgen ekler.
Kotlin
// Instantiates a new Polygon object and adds points to define a rectangle val rectOptions = PolygonOptions() .add( LatLng(37.35, -122.0), LatLng(37.45, -122.0), LatLng(37.45, -122.2), LatLng(37.35, -122.2), LatLng(37.35, -122.0) ) // Get back the mutable Polygon val polygon = map.addPolygon(rectOptions)
Java
// Instantiates a new Polygon object and adds points to define a rectangle PolygonOptions polygonOptions = new PolygonOptions() .add(new LatLng(37.35, -122.0), new LatLng(37.45, -122.0), new LatLng(37.45, -122.2), new LatLng(37.35, -122.2), new LatLng(37.35, -122.0)); // Get back the mutable Polygon Polygon polygon = map.addPolygon(polygonOptions);
Çokgenin şeklini eklendikten sonra değiştirmek için, Polygon.setPoints()
yöntemini çağırabilir ve çokgenin ana hattı için yeni bir nokta listesi sağlayabilirsiniz.
Poligonun görünümünü hem haritaya eklemeden önce hem de haritaya eklemeden sonra özelleştirebilirsiniz. Daha fazla ayrıntı için aşağıdaki görünümleri özelleştirme bölümüne bakın.
Poligon otomatik tamamlama
Yukarıdaki örnekte yer alan Poligon beş koordinattan oluşur ancak ilk ve son koordinatların, döngüyü tanımlayan aynı konumda olduğuna dikkat edin. Ancak pratikte, poligonlar kapalı alanları tanımladığından, bu son koordinatı tanımlamanıza gerek yoktur. Son koordinat ilk koordinattan farklıysa API, koordinat sırasının sonuna ilk koordinatı ekleyerek poligonu otomatik olarak "kapatır".
Aşağıdaki iki poligon eşdeğerdir ve her biri için polygon.getPoints()
çağrısı yapıldığında 4 nokta döndürülecektir.
Kotlin
val polygon1 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(0.0, 0.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) ) val polygon2 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) )
Java
Polygon polygon1 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0)) .strokeColor(Color.RED) .fillColor(Color.BLUE)); Polygon polygon2 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5)) .strokeColor(Color.RED) .fillColor(Color.BLUE));
İçi boş poligon oluşturma
Dolgulu halkalar veya "halkalar" (poligon içinde "adalar") gibi karmaşık şekiller oluşturmak için birden fazla yol tek bir Polygon
nesnesinde birleştirilebilir. Karmaşık şekiller her zaman birden çok
daha basit yolun birleşiminden oluşur.
Aynı alanda iki yol tanımlanmalıdır. İki bölgenin daha büyük olanı, dolgu alanını tanımlar ve ek seçenek içermeyen basit bir poligondur.
Daha sonra, addHole()
yöntemine doğru ikinci bir yol geçirin. İkinci, daha küçük yol büyük yol tarafından tamamen çevrelendiğinde, poligonun bir parçası kaldırılmış gibi görünür. Delik, poligonun ana hattıyla kesişiyorsa poligon dolgu olmadan oluşturulur.
Aşağıdaki snippet, daha küçük bir dikdörtgen deliğe sahip tek bir dikdörtgen oluşturur.
Kotlin
val hole = listOf( LatLng(1.0, 1.0), LatLng(1.0, 2.0), LatLng(2.0, 2.0), LatLng(2.0, 1.0), LatLng(1.0, 1.0) ) val hollowPolygon = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(3.0, 0.0), LatLng(0.0, 0.0) ) .addHole(hole) .fillColor(Color.BLUE) )
Java
List<LatLng> hole = Arrays.asList(new LatLng(1, 1), new LatLng(1, 2), new LatLng(2, 2), new LatLng(2, 1), new LatLng(1, 1)); Polygon hollowPolygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(3, 0), new LatLng(0, 0)) .addHole(hole) .fillColor(Color.BLUE));
İçi boş poligon haritada aşağıda gösterildiği gibi görünür:
Poligon etkinlikleri
Varsayılan olarak, çokgenler tıklanabilir değildir. Polygon.setClickable(boolean)
yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.
Tıklanabilir bir poligondaki tıklama etkinliklerini dinlemek için OnPolygonClickListener
kullanın. Bu işleyiciyi haritada ayarlamak için
GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)
numaralı telefonu arayın.
Kullanıcı bir poligonu tıkladığında
onPolygonClick(Polygon)
geri çağırması alırsınız.
Daireler
Maps API, genel bir Polygon
sınıfına ek olarak, yapısını basitleştirmek amacıyla Circle
nesnelerine ilişkin özel sınıflar da içerir.
Daire oluşturmak için aşağıdaki iki özelliği belirtmeniz gerekir:
LatLng
ilecenter
.radius
metre cinsinden.
Daha sonra daire, Dünya yüzeyinde belirli bir center
değerinden radius
metre uzaklıktaki tüm noktaların kümesi olarak tanımlanır. Google Haritalar API'si tarafından kullanılan Mercator projeksiyonu, küre üzerinde düz bir yüzeyde oluşturduğundan, ekvatora yakın bir yerde olduğunda haritada neredeyse mükemmel bir daire olarak görünür ve ekvatordan uzaklaştıkça (ekranda) giderek daha dairesel biçimde görünmez.
Dairenin şeklini eklendikten sonra değiştirmek için Circle.setRadius()
veya Circle.setCenter()
yöntemini çağırabilir ve yeni değerler sağlayabilirsiniz.
Çemberin görünümünü, hem haritaya eklemeden önce hem de haritaya eklemeden sonra özelleştirebilirsiniz. Daha fazla ayrıntı için aşağıdaki görünümleri özelleştirme bölümüne bakın.
Aşağıdaki kod snippet'i, CircleOptions
nesnesi oluşturup GoogleMap.addCircle(CircleOptions)
yöntemini çağırarak haritaya bir daire ekler:
Kotlin
// Instantiates a new CircleOptions object and defines the center and radius val circleOptions = CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) // In meters // Get back the mutable Circle val circle = map.addCircle(circleOptions)
Java
// Instantiates a new CircleOptions object and defines the center and radius CircleOptions circleOptions = new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000); // In meters // Get back the mutable Circle Circle circle = map.addCircle(circleOptions);
Çevre etkinlikleri
Varsayılan olarak, çevreler tıklanabilir değildir. CircleOptions.clickable(boolean)
ile GoogleMap.addCircle()
yöntemini çağırarak veya Circle.setClickable(boolean)
yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.
Tıklanabilir bir dairedeki tıklama etkinliklerini dinlemek için OnCircleClickListener
kullanın. Bu işleyiciyi haritada ayarlamak için
GoogleMap.setOnCircleClickListener(OnCircleClickListener)
numaralı telefonu arayın.
Kullanıcı bir çevreyi tıkladığında aşağıdaki kod örneğinde gösterildiği gibi
onCircleClick(Circle)
geri çağırması alırsınız:
Kotlin
val circle = map.addCircle( CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) .strokeWidth(10f) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true) ) map.setOnCircleClickListener { // Flip the r, g and b components of the circle's stroke color. val strokeColor = it.strokeColor xor 0x00ffffff it.strokeColor = strokeColor }
Java
Circle circle = map.addCircle(new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000) .strokeWidth(10) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true)); map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() { @Override public void onCircleClick(Circle circle) { // Flip the r, g and b components of the circle's stroke color. int strokeColor = circle.getStrokeColor() ^ 0x00ffffff; circle.setStrokeColor(strokeColor); } });
Görünümleri özelleştirme
Bir şeklin görünümünü, haritaya eklenmeden önce (seçenek nesnesinde istenen özelliği belirterek) veya haritaya eklendikten sonra değiştirebilirsiniz. Alıcılar, şeklin mevcut durumuna kolayca erişebilmeniz amacıyla tüm mülkler için de açığa çıkar.
Aşağıdaki snippet, Melbourne'dan Perth'e jeodezik segmentlere sahip kalın mavi bir çoklu çizgi ekler. Aşağıdaki bölümlerde bu özellikler daha ayrıntılı olarak açıklanmaktadır.
Kotlin
val polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
Java
Polyline polyline = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
Harita aşağıda gösterildiği gibi görünür:
Not: Bunların çoğu açıklanan şekillerden herhangi birine uygulanabilir olsa da bazı özellikler belirli şekiller için anlamlı olmayabilir (ör. Çoklu Çizginin iç kısmı olmadığı için dolgu rengi olamaz).
Çizgi rengi
Fırça rengi, şeklin fırçasının opaklığını ve rengini belirten 32 bitlik alfa-kırmızı-yeşil-mavi (ARGB) bir tamsayıdır. *Options.strokeColor()
(veya çoklu çizgide PolylineOptions.color()
) çağrısı yaparak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmemişse varsayılan fırça rengi siyahtır (Color.BLACK
).
Şekil haritaya eklendikten sonra getStrokeColor()
(veya bir çoklu çizgi için getColor()
) işlevi çağrılarak fırça rengine erişilebilir ve setStrokeColor()
(setColor() for a polyline
) işlevi çağrılarak değiştirilebilir.
Dolgu rengi
Dolgu rengi yalnızca poligonlar ve daireler için geçerlidir. Belirli iç kısımları olmadığından, çoklu çizgiler için geçerli değildir. Bir poligonda deliklerinin içindeki bölgeler poligonun iç kısmının parçası değildir ve dolgu rengi ayarlanırsa poligonun renklendirilmez.
Dolgu rengi, şeklin iç kısmının opaklığını ve rengini belirten 32 bit alfa-kırmızı-yeşil-mavi (ARGB) tam sayıdır. *Options.fillColor()
yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmemişse varsayılan fırça rengi şeffaftır (Color.TRANSPARENT
).
Şekil haritaya eklendikten sonra, dolgu rengine getFillColor()
işlevi çağrılarak erişilebilir ve setFillColor()
işlevi çağrılarak değiştirilebilir.
Fırça genişliği
Çizginin, piksel (piksel) cinsinden kayan nokta olarak genişliği. Harita yakınlaştırıldığında genişlik ölçeklendirilmez (ör. bir şekil tüm yakınlaştırma düzeylerinde aynı çizgi genişliğine sahip olur). *Options.strokeWidth()
(veya çoklu çizgi için PolylineOptions.width()
) yöntemini çağırarak şeklin seçenek nesnesinde bu özelliği ayarlayın. Belirtilmemişse varsayılan fırça 10 pikseldir.
Şekil haritaya eklendikten sonra, çizgi genişliğine getStrokeWidth()
(veya bir çoklu çizgi için getWidth()
) çağrılarak erişilebilir ve setStrokeWidth()
(setWidth() for a polyline
) işlevi çağrılarak değiştirilebilir.
Çizgi deseni
Varsayılan çizgi deseni, çoklu çizgiler ve çokgenler ile dairelerin dış çizgileri için kesintisiz bir çizgidir. Her öğenin bir çizgi, nokta veya boşluk olduğu PatternItem
nesneleri için özel bir çizgi deseni belirtebilirsiniz.
Aşağıdaki örnekte, bir çoklu çizginin deseni tekrar eden bir nokta dizisi, ardından 20 piksel uzunluğunda bir boşluk, 30 piksel uzunluğunda bir çizgi ve 20 piksellik başka bir boşluğa ayarlanmaktadır.
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
Java
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
Kalıp, şekil için belirtilen ilk köşe noktasındaki ilk desen öğesinden başlayarak çizgi boyunca tekrarlanır.
Eklem türleri
Çoklu çizgiler ve poligonların dış çizgilerinde varsayılan sabit gönye eklem türünü değiştirmek için bir eğim veya yuvarlak JointType
belirtebilirsiniz.
Aşağıdaki örnekte, bir çoklu çizgiye yuvarlak bağlantı türü uygulanmaktadır:
Kotlin
polyline.jointType = JointType.ROUND
Java
polyline.setJointType(JointType.ROUND);
Bağlantı türü, hattaki iç bükülleri etkiler. Çizgide, içinde kısa çizgi bulunan bir fırça deseni varsa bir kısa çizgi bir eklemde durduğunda birleştirme türü de geçerli olur. Birleştirme türleri, her zaman dairesel olduklarından noktaları etkilemez.
Satır sınırları
Çoklu çizginin her bir ucu için bir Cap
stili belirtebilirsiniz. Seçenekler şunlardır: popo (varsayılan), kare, yuvarlak veya özel bit eşlem.
PolylineOptions.startCap
ve PolylineOptions.endCap
içinde stili ayarlayın veya uygun alıcı ve belirleyici yöntemlerini kullanın.
Aşağıdaki snippet'te, bir çoklu çizginin başında yuvarlak bir başlık belirtilmektedir.
Kotlin
polyline.startCap = RoundCap()
Java
polyline.setStartCap(new RoundCap());
Aşağıdaki snippet, bitiş sınırı için özel bir bit eşlem belirtir:
Kotlin
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
Java
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
Özel bit eşlem kullandığınızda referans çizgisi genişliğini piksel cinsinden belirtmeniz gerekir. API, bit eşlemi buna göre ölçeklendirir. Referans çizgi genişliği, resmin orijinal boyutunda başlık için bit eşlem resmini tasarlarken kullandığınız çizgi genişliğidir. Varsayılan referans çizgisi genişliği 10 pikseldir. İpucu: Referans çizgi genişliğini belirlemek için, bit eşlem resminizi bir resim düzenleyicide% 100 zumda açın ve resme göre istediğiniz çizgi fırçası genişliğini belirleyin.
Bit eşlemi oluşturmak için BitmapDescriptorFactory.fromResource()
kullanıyorsanız yoğunluktan bağımsız bir kaynak (nodpi) kullandığınızdan emin olun.
Jeodezik segmentler
Jeodezik ayar yalnızca çoklu çizgiler ve poligonlar için geçerlidir. Bu, bir segment koleksiyonu olarak tanımlanmadığından çevreler için geçerli değildir.
Jeodezik ayar, çoklu çizginin/poligonun ardışık köşeleri arasındaki çizgi segmentlerinin nasıl çizileceğini belirler. Jeodezik segmentler, Dünya yüzeyindeki en kısa yolu (küre) izleyen ve genellikle Merkatör projeksiyonuyla harita üzerinde eğri çizgiler halinde görünen segmentlerdir. Jeodezik olmayan segmentler harita üzerinde düz çizgiler olarak çizilir.
Şeklin seçenek nesnesinde bu özelliği ayarlamak için *Options.geodesic()
yöntemini çağırın. Burada true
, segmentlerin jeodezik olarak çizilmesi gerektiğini, false
ise segmentlerin düz çizgiler olarak çizilmesi gerektiğini belirtir.
Belirtilmemişse varsayılan olarak jeodezik olmayan segmentler (false
) kullanılır.
Şekil haritaya eklendikten sonra, isGeodesic()
çağrısı yapılarak jeodezik ayara erişilebilir ve setGeodesic()
işlevi çağrılarak değiştirilebilir.
Z-endeksi
Z-endeksi, haritadaki diğer bindirmelere (diğer şekiller, zemin bindirmeleri ve karo bindirmeler) göre bu şeklin yığın sırasını belirtir. Yüksek Z-endeksine sahip bir bindirme, düşük z-endeksli bindirmelerin üzerinde çizilir. Aynı Z-endeksine sahip iki bindirme rastgele bir sırayla çizilir.
İşaretçilerin, diğer bindirmelerin z-endeksinden bağımsız olarak her zaman diğer bindirmelerin üzerine çizildiğini unutmayın.
*Options.zIndex()
yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın.
Bir değer belirtilmezse varsayılan Z-endeksi 0
olur. Şekil haritaya eklendikten sonra, Z-endeksi getZIndex()
çağrısı yapılarak erişilebilir ve setZIndex()
işlevi çağrılarak değiştirilebilir.
Görüş mesafesi
Görünürlük, şeklin haritada çizilip çizilmeyeceğini belirtir. Burada true
şeklin çizilmesi gerektiğini, false
ise çizilmemesi gerektiğini belirtir. Haritada geçici olarak şekil göstermemenize olanak tanır. Şekli haritadan kalıcı olarak kaldırmak için söz konusu şekilde remove()
çağrısı yapın.
*Options.visible()
yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Bir değer belirtilmezse varsayılan görünürlük true
olur.
Şekil haritaya eklendikten sonra isVisible()
çağrısı yapılarak görünürlük erişimine erişilebilir ve setVisible()
işlevi çağrılarak değiştirilebilir.
Verileri bir şekille ilişkilendirme
Şeklin setTag()
yöntemini kullanarak çoklu çizgi, poligon veya daire içeren rastgele bir veri nesnesi depolayabilir ve getTag()
kullanarak bu nesneyi alabilirsiniz.
Örneğin, çoklu çizgi içeren bir veri nesnesini depolamak için Polyline.setTag()
ve veri nesnesini almak için Polyline.getTag()
çağrısı yapın.
Aşağıdaki kod, belirtilen çoklu çizgi için rastgele bir etiket (A
) tanımlar:
Kotlin
val polyline = map.addPolyline( PolylineOptions() .clickable(true) .add( LatLng(-35.016, 143.321), LatLng(-34.747, 145.592), LatLng(-34.364, 147.891), LatLng(-33.501, 150.217), LatLng(-32.306, 149.248), LatLng(-32.491, 147.309) ) ) polyline.tag = "A"
Java
Polyline polyline = map.addPolyline((new PolylineOptions()) .clickable(true) .add(new LatLng(-35.016, 143.321), new LatLng(-34.747, 145.592), new LatLng(-34.364, 147.891), new LatLng(-33.501, 150.217), new LatLng(-32.306, 149.248), new LatLng(-32.491, 147.309))); polyline.setTag("A");
Şekillerle veri depolamanın ve almanın kullanışlı olabileceği senaryolara ilişkin bazı örnekleri burada bulabilirsiniz:
- Uygulamanız farklı türlerde şekillere hitap ediyor olabilir ve kullanıcı bunları tıkladığında bunlara farklı bir şekilde davranmak istersiniz.
- Benzersiz kayıt tanımlayıcılarına sahip olan ve şekillerin sistemdeki belirli kayıtları temsil ettiği bir sistemle karşılaşıyor olabilirsiniz.
- Şekil verileri, şeklin Z-endeksini belirleme önceliğini gösterebilir.