Android için Google Haritalar API'si, haritalarınızı uygulamanız için özelleştirmek amacıyla haritalara şekil eklemenize olanak tanıyan bazı basit yöntemler sunar.
Polyline
, istediğiniz şekli oluşturabilen ve haritadaki yolları ve rotaları işaretlemek için kullanılabilen bağlı bir dizi çizgi segmentidir.Polygon
, haritadaki alanları işaretlemek için kullanılabilen kapalı bir şekildir.Circle
, Dünya'nın yüzeyindeki bir dairenin haritaya coğrafi olarak doğru şekilde yansıtılmış halidir.
Bir dizi özelliği değiştirerek tüm bu şekillerin görünümlerini özelleştirebilirsiniz.
Kod örnekleri
Alanları ve rotaları temsil etmek için poligonlar ve çoklu çizgiler eklemeyle ilgili eğitim, basit bir Android uygulamasının tüm kodunu içerir.
Ayrıca, GitHub'daki ApiDemos deposu, şekillerin ve şekillerin kullanımını gösteren örnekler içerir:
- CircleDemoActivity (Java / Kotlin): Çember
- PolygonDemoActivity (Java / Kotlin): Poligon
- PolylineDemoActivity (Java / Kotlin): Çoklu çizgi
Çoklu çizgiler
Polyline
sınıfı, haritada bağlı bir dizi çizgi segmentini tanımlar. Polyline
nesnesi, bir grup LatLng
konumdan oluşur ve bu konumları sıralı bir sırayla birbirine bağlayan bir dizi çizgi segmenti oluşturur.
Bu videoda, harita üzerinde yol çizmek için çoklu çizgiler kullanarak kullanıcılarınızın istedikleri yere ulaşmalarına nasıl yardımcı olabileceğinizle ilgili fikirler verilmektedir.
Poli çizgi oluşturmak için önce bir PolylineOptions
nesnesi oluşturun ve bu nesneye noktalar ekleyin. Noktalar, dünyanın yüzeyindeki bir noktayı temsil eder ve LatLng
nesnesi olarak ifade edilir. Çizgi segmentleri, noktalar arasında PolylineOptions
nesnesine ekleme sırasına göre çizilir.
PolylineOptions
nesnesine puan eklemek için PolylineOptions.add()
işlevini çağırın.
Bu yöntemin değişken sayıda parametre aldığını unutmayın. Böylece tek seferde birden fazla nokta ekleyebilirsiniz (noktalar zaten bir listedeyse PolylineOptions.addAll(Iterable<LatLng>)
işlevini de çağırabilirsiniz).
Ardından GoogleMap.addPolyline(PolylineOptions)
işlevini çağırarak çoklu çizgiyi bir haritaya ekleyebilirsiniz. Bu yöntem, daha sonra polilini değiştirebileceğiniz bir Polyline
nesnesi döndürür.
Aşağıdaki kod snippet'inde, haritaya nasıl dikdörtgen ekleneceği gösterilmektedir:
Kotlin
// Instantiates a new Polyline object and adds points to define a rectangle val polylineOptions = PolylineOptions() .add(LatLng(37.35, -122.0)) .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(LatLng(37.35, -122.0)) // Closes the polyline. // Get back the mutable Polyline val polyline = map.addPolyline(polylineOptions)
Java
// Instantiates a new Polyline object and adds points to define a rectangle PolylineOptions polylineOptions = new PolylineOptions() .add(new LatLng(37.35, -122.0)) .add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(new LatLng(37.35, -122.0)); // Closes the polyline. // Get back the mutable Polyline Polyline polyline = map.addPolyline(polylineOptions);
Dikdörtgen haritada aşağıdaki gibi görünür:
Poli çizgisi eklendikten sonra şeklini değiştirmek için Polyline.setPoints()
işlevini çağırabilir ve poli çizgisi için yeni bir nokta listesi sağlayabilirsiniz.
Çoklu çizginin görünümünü hem haritaya eklemeden önce hem de ekledikten sonra özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki görünü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.
- Renk geçişli çoklu çizgiler, iki renkten oluşan bir renk geçişi kullanarak bir çoklu çizgiyi renklendirir.
- Damgalanmış çoklu çizgiler, tekrarlanan bitmap'leri kullanarak bir çoklu çizginin stilini belirler.
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 bir çoklu çizgi oluşturma
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)));
Gradyan çoklu çizgi oluşturma
Bir degrade tanımlamak için iki 32 bit alfa-kırmızı-yeşil-mavi (ARGB) tam sayı belirterek çizginin başlangıç ve bitiş renklerini belirtebilirsiniz. PolylineOptions.addSpan()
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ı-sarı gradyanlı bir çoklu çizgi 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
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 dinleyiciyi haritada ayarlamak için GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
numaralı telefonu arayın.
Kullanıcı bir çok çizgiyi tıkladığında onPolylineClick(Polyline)
geri çağırma alırsınız.
Poligonlar
Polygon
nesneleri, sıralı bir sırada bir dizi koordinattan oluşmaları nedeniyle Polyline
nesnelerine benzer. Ancak poligonlar açık uçlu olmak yerine, iç kısmı doldurulmuş kapalı bir döngü içindeki bölgeleri tanımlayacak şekilde tasarlanmıştır.
Haritaya Polyline
eklediğiniz gibi Polygon
ekleyebilirsiniz. Önce bir PolygonOptions
nesnesi oluşturun ve buna birkaç nokta ekleyin. Bu noktalar, poligonun ana hatlarını oluşturur.
Daha sonra, GoogleMap.addPolygon(PolygonOptions)
çağrısı yaparak çokgeni haritaya eklersiniz. Bu çağrı, bir Polygon
nesnesi döndürür.
Aşağıdaki kod snippet'inde haritaya bir dikdörtgen eklenmektedir.
Kotlin
// Instantiates a new Polygon object and adds points to define a rectangle val rectOptions = PolygonOptions() .add( LatLng(37.35, -122.0), LatLng(37.45, -122.0), LatLng(37.45, -122.2), LatLng(37.35, -122.2), LatLng(37.35, -122.0) ) // Get back the mutable Polygon val polygon = map.addPolygon(rectOptions)
Java
// Instantiates a new Polygon object and adds points to define a rectangle PolygonOptions polygonOptions = new PolygonOptions() .add(new LatLng(37.35, -122.0), new LatLng(37.45, -122.0), new LatLng(37.45, -122.2), new LatLng(37.35, -122.2), new LatLng(37.35, -122.0)); // Get back the mutable Polygon Polygon polygon = map.addPolygon(polygonOptions);
Poligon eklendikten sonra şeklini değiştirmek için Polygon.setPoints()
işlevini çağırabilir ve poligonun ana hatları için yeni bir nokta listesi sağlayabilirsiniz.
Poligonu hem haritaya eklemeden önce hem de haritaya ekledikten sonra görünümünü ö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. Daha küçük olan ikinci yol, daha büyük yolun bir parçası olarak tamamen çevrili olduğunda, poligonun bir parçası kaldırılmış gibi görünür. Delik, poligonun ana hatlarıyla kesişiyorsa poligon doldurulmadan oluşturulur.
Aşağıdaki snippet, daha küçük dikdörtgen bir delik içeren tek bir dikdörtgen oluşturur.
Kotlin
val hole = listOf( LatLng(1.0, 1.0), LatLng(1.0, 2.0), LatLng(2.0, 2.0), LatLng(2.0, 1.0), LatLng(1.0, 1.0) ) val hollowPolygon = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(3.0, 0.0), LatLng(0.0, 0.0) ) .addHole(hole) .fillColor(Color.BLUE) )
Java
List<LatLng> hole = Arrays.asList(new LatLng(1, 1), new LatLng(1, 2), new LatLng(2, 2), new LatLng(2, 1), new LatLng(1, 1)); Polygon hollowPolygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(3, 0), new LatLng(0, 0)) .addHole(hole) .fillColor(Color.BLUE));
Boş poligon, haritada aşağıdaki gibi görünür:
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
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
olarakcenter
.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.
Ekledikten sonra dairenin şeklini değiştirmek için Circle.setRadius()
veya Circle.setCenter()
işlevini çağırıp yeni değerler sağlayabilirsiniz.
Çemberin görünümünü hem haritaya eklemeden önce hem de ekledikten sonra özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki görünümü özelleştirme bölümüne bakın.
Aşağıdaki kod snippet'i, bir CircleOptions
nesnesi oluşturarak ve GoogleMap.addCircle(CircleOptions)
'i çağırarak haritaya bir daire ekler:
Kotlin
// Instantiates a new CircleOptions object and defines the center and radius val circleOptions = CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) // In meters // Get back the mutable Circle val circle = map.addCircle(circleOptions)
Java
// Instantiates a new CircleOptions object and defines the center and radius CircleOptions circleOptions = new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000); // In meters // Get back the mutable Circle Circle circle = map.addCircle(circleOptions);
Etkinlikleri daire içine alma
Daireler varsayılan olarak tıklanabilir değildir. CircleOptions.clickable(boolean)
ile GoogleMap.addCircle()
'ü çağırarak veya Circle.setClickable(boolean)
'yi çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.
Tıklanabilir ç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ümü özelleştirme
Bir şeklin görünümünü hem haritaya eklenmeden önce (options nesnesinde istenen özelliği belirterek) hem de haritaya eklendikten sonra değiştirebilirsiniz. Şeklin mevcut durumuna kolayca erişebilmeniz için soyutlar tüm mülklerde de gösterilir.
Aşağıdaki snippet, Melbourne'dan Perth'e kadar jeodezik segmentler içeren 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ğıdaki gibi görünür:
Not: Bunların çoğu açıklanan şekillerin herhangi birine uygulanabilir olsa da bazı özellikler belirli şekiller için anlamlı olmayabilir (ör. bir çok çizginin içi boş olduğundan dolgu rengi olamaz).
Fırça rengi
Çizgi rengi, şeklin çizgisinin opaklığını ve rengini belirten 32 bitlik bir alfa-kırmızı-yeşil-mavi (ARGB) tam sayıdır. *Options.strokeColor()
(veya çoklu çizgi durumunda PolylineOptions.color()
) çağrısını yaparak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmemişse varsayılan fırça rengi siyah olur (Color.BLACK
).
Şekil haritaya eklendikten sonra getStrokeColor()
(veya poli çizgi için getColor()
) çağrılarak çizgi rengine erişilebilir ve setStrokeColor()
(setColor() for a polyline
) çağrılarak değiştirilebilir.
Dolgu rengi
Dolgu rengi yalnızca poligonlar ve daireler için geçerlidir. İç kısmı tanımlanmadığından çoklu çizgiler için geçerli değildir. Bir poligon için, deliklerinin içindeki bölgeler poligonun iç kısmının bir parçası değildir ve dolgu rengi ayarlanırsa bu alanlar renklendirilmez.
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()
yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği 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
Satır çizgisinin genişliği, piksel (px) cinsinden kayan nokta olarak. Harita yakınlaştırıldığında genişlik ölçeklendirilmez (yani bir şeklin tüm yakınlaştırma seviyelerinde aynı kalınlıkta çizgisi olur). *Options.strokeWidth()
(veya çoklu çizgi için PolylineOptions.width()
) işlevini çağırarak bu özelliği şeklin seçenek nesnesinde ayarlayın. Belirtilmemişse varsayılan fırça 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 örnek, bir çoklu çizginin desenini, 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 ayarlıyor.
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. Satırda kısa çizgi içeren bir çizgi rengi deseni varsa kısa çizgi bir eklemin üzerine geldiğinde de eklem türü geçerli olur. Eklem türleri, her zaman dairesel olduğundan noktaları etkilemez.
Satır başlıkları
Bir çok çizginin her ucu için bir Cap
stili belirtebilirsiniz. Seçenekler; kenarlı (varsayılan), kare, yuvarlak veya özel bitmap'tir.
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 bitmap kullandığınızda referans çizgi genişliğini piksel cinsinden belirtmeniz gerekir. API, bitmap'i buna göre ölçeklendirir. Referans çizgi genişliği, 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 çizgi kalınlığını belirlemek için bitmap resminizi bir resim düzenleyicide %100 yakınlaştırmada açın ve çizgi kalınlığının resmin göreli 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.
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. Jeodezik segmentler, Dünya yüzeyinde (küre) en kısa yolu izleyen ve genellikle Merkatör projeksiyonu olan bir haritada eğri çizgiler olarak görünen segmentlerdir. Jeodezik olmayan segmentler, harita üzerinde düz çizgiler olarak çizilir.
*Options.geodesic()
çağrısı yaparak bu özelliği, şeklin seçenek nesnesinde ayarlayın. Burada true
, segmentlerin coğrafi olarak çizilmesi gerektiğini 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 isGeodesic()
çağrılarak jeodezik ayarına erişilebilir ve setGeodesic()
çağrılarak ayar değiştirilebilir.
Z-endeksi
Z-endeksi, bu şeklin haritadaki diğer yer paylaşımlarına (diğer şekiller, zemin yer paylaşımları ve karo yer paylaşımları) göre yığın sırasını belirtir. Yüksek Z-endeksi olan yer paylaşımları, daha düşük Z-endeksi olan yer paylaşımlarının üzerine çizilir. Aynı Z-endeksine sahip iki yer paylaşımı, rastgele bir sırada çizilir.
İşaretçilerin, diğer yer paylaşımlarının z-dizininden bağımsız olarak her zaman diğer yer paylaşımlarının üzerinde çizildiğini unutmayın.
*Options.zIndex()
işlevini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın.
Belirtilmemişse varsayılan z-dizin değeri 0
olur. Şekil haritaya eklendikten sonra, getZIndex()
çağrı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
, şeklin çizileceğini, false
ise çizilmeyeceğini gösterir. Bu seçenek, bir şekli haritada geçici olarak göstermemenize olanak tanır. Şekli haritadan kalıcı olarak kaldırmak için söz konusu şekil üzerinde remove()
işlevini çağırın.
*Options.visible()
işlevini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmemişse varsayılan görünürlük true
olur.
Şekil haritaya eklendikten sonra isVisible()
çağrılarak görünürlük durumuna erişilebilir ve setVisible()
çağrılarak görünürlük durumu değiştirilebilir.
Verileri bir şekille ilişkilendirme
Şeklin setTag()
yöntemini kullanarak bir poli çizgi, poligon veya daire içeren rastgele bir veri nesnesini saklayabilir ve getTag()
yöntemini kullanarak nesneyi alabilirsiniz.
Örneğin, ç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 verileri depolamanın ve almanın yararlı olduğu bazı senaryo örneklerini burada 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 belirleme önceliğini gösterebilir.