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.
Tüm bu şekillerin görünümünü, bazı özellikleri değiştirerek özelleştirebilirsiniz.
Kod örnekleri
Alanları ve rotaları temsil etmek için poligon ve çoklu çizgi ekleme konulu eğitim, basit bir Android uygulamasının tüm kodunu içerir.
Ayrıca GitHub'daki ApiDemos deposu, şekillerin kullanımını ve özelliklerini 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 poli çizgileri 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ünya yüzeyindeki bir noktayı temsil eder ve LatLng
nesnesi olarak ifade edilir. Çizgi segmentleri, PolylineOptions
nesnesine ekleme sırasına göre noktalar arasında ç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ümü özelleştirme bölümüne bakın.
Çoklu çizgi özelleştirme
Çoklu çizgilerin görünümünü özelleştirmenin birkaç yolu vardır:
- Çok renkli çoklu çizgiler, çoklu çizgi segmentlerini farklı renklere ayarlar.
- Renk geçişli çoklu çizgiler, bir çoklu çizgiyi iki renkten oluşan bir renk geçişi kullanarak renklendirir.
- Damgalanmış çoklu çizgiler, tekrarlanan bitmap'leri kullanarak bir çoklu çizginin stilini belirler.
Çoklu ç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
Bir çok çizginin segmentlerini tek tek renklendirmek için StyleSpan
nesneleri oluşturup addSpan()
veya addSpans()
yöntemlerini kullanarak PolylineOptions
'a ekleyerek aralıkları kullanabilirsiniz. Varsayılan olarak, dizideki her öğe, karşılık gelen çizgi segmentinin rengini ayarlar. Aşağıdaki örnekte, kırmızı ve yeşil segmentler içeren bir çok çizgi oluşturmak için segment renklerinin nasıl ayarlanacağı gösterilmektedir:
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(StyleSpan(Color.RED)) .addSpan(StyleSpan(Color.GREEN)) )
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(Color.RED)) .addSpan(new StyleSpan(Color.GREEN)));
Renk geçişli poli çizgisi oluşturma
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()
işlevini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın.
Aşağıdaki örnekte, Woodland Park Hayvanat Bahçesi'nden Kirkland, Washington'a kadar kırmızıdan sarıya doğru degrade bir çoklu çizginin oluşturulması gösterilmektedir.
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan( StyleSpan( StrokeStyle.gradientBuilder( Color.RED, Color.YELLOW ).build() ) ) )
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));
Damgalanmış poli çizgi oluşturma
Bir çok çizginin görünümünü tekrarlanan bir bitmap dokusu olarak 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)
işlevini ç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 şekilde Polygon
ekleyebilirsiniz. Öncelikle bir PolygonOptions
nesnesi oluşturun ve bu nesneye bazı noktalar ekleyin. Bu noktalar, poligonun ana hatlarını oluşturur.
Ardından, Polygon
nesnesi döndüren GoogleMap.addPolygon(PolygonOptions)
işlevini çağırarak poligonu haritaya ekleyin.
Aşağıdaki kod snippet'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.
Poligonun görünümünü hem haritaya eklemeden önce hem de ekledikten sonra özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki görünümü özelleştirme bölümüne bakın.
Poligon otomatik tamamlama
Yukarıdaki örnekteki poligon beş koordinattan oluşur ancak ilk ve son koordinatların aynı konumda olduğu ve bu durumun döngüyü tanımladığına dikkat edin. 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
Birden fazla yol, doldurulmuş halkalar veya "halka çörekler" (poligonal alanların poligon içinde "adalar" olarak göründüğü) gibi karmaşık şekiller oluşturmak için tek bir Polygon
nesnesinde birleştirilebilir. Karmaşık şekiller her zaman birden fazla basit yolun birleşiminden oluşur.
Aynı alanda iki yol tanımlanmalıdır. İki bölgeden daha büyük olan, doldurma alanını tanımlar ve ek seçenekleri olmayan basit bir poligondur.
Ardından, addHole()
yöntemine ikinci bir yol iletin. İkinci, daha küçük yol daha büyük yol tarafından tamamen çevrelendiğinde, poligonun bir parçası kaldırılmış gibi görünür. Delik, poligonun ana hatlarıyla kesişiyorsa poligon doldurulmadan oluşturulur.
Aşağıdaki snippet, daha küçük dikdörtgen bir delik içeren tek bir dikdörtgen oluşturur.
Kotlin
val hole = listOf( LatLng(1.0, 1.0), LatLng(1.0, 2.0), LatLng(2.0, 2.0), LatLng(2.0, 1.0), LatLng(1.0, 1.0) ) val hollowPolygon = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(3.0, 0.0), LatLng(0.0, 0.0) ) .addHole(hole) .fillColor(Color.BLUE) )
Java
List<LatLng> hole = Arrays.asList(new LatLng(1, 1), new LatLng(1, 2), new LatLng(2, 2), new LatLng(2, 1), new LatLng(1, 1)); Polygon hollowPolygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(3, 0), new LatLng(0, 0)) .addHole(hole) .fillColor(Color.BLUE));
Boş poligon, haritada aşağı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 dinleyiciyi haritada 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:
center
olarakLatLng
.radius
metre.
Ardından, bir daire, Dünya'nın yüzeyinde, belirli bir center
noktasından radius
metre uzaklıktaki 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 nasıl oluşturduysa bu küre, ekvatora yakın bir yerdeyken haritada neredeyse mükemmel bir daire olarak görünür ve daire ekvatorun dışına doğru hareket ettikç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 bir dairedeki tıklama etkinliklerini dinlemek için OnCircleClickListener
simgesini 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 tüm mülkler için alıcılara da erişilebilir.
Aşağıdaki snippet, Melbourne'dan Perth'e uzanan jeodezik segmentler içeren kalın bir mavi poli çizgi ekler. Aşağıdaki bölümlerde bu özellikler daha ayrıntılı olarak açıklanmaktadır.
Kotlin
val polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
Java
Polyline polyline = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
Harita aşağı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 çizgi rengi siyahtır (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. Tanımlanmış iç alanları olmadığı için çoklu çizgiler için geçerli değildir. Bir poligonun boşluklarının içindeki bölgeler, poligonun iç kısmının bir parçası değildir ve doldurma rengi ayarlanırsa boyanmaz.
Dolgu rengi, şeklin iç kısmının opaklığını ve rengini belirten 32 bitlik bir alfa-kırmızı-yeşil-mavi (ARGB) tam sayıdır. *Options.fillColor()
işlevini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmemişse varsayılan çizgi rengi şeffaftır (Color.TRANSPARENT
).
Şekil haritaya eklendikten sonra getFillColor()
çağrısı yapılarak dolgu rengine erişilebilir ve setFillColor()
çağrısı yapılarak dolgu rengi 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 çizgi kalınlığı 10 pikseldir.
Şekil haritaya eklendikten sonra getStrokeWidth()
(veya poli çizgi için getWidth()
) çağrılarak çizgi kalınlığına erişilebilir ve setStrokeWidth()
(setWidth() for a polyline
) çağrılarak değiştirilebilir.
Çizgi deseni
Varsayılan çizgi deseni, çok çizgiler ve poligonların ve dairelerin ana hatları için düz bir çizgidir. Her öğenin kısa çizgi, nokta veya boşluk olduğu PatternItem
nesnelerinden oluşan özel bir çizgi kalıbı belirtebilirsiniz.
Aşağıdaki örnekte, bir çok çizginin deseni tekrarlanan bir nokta dizisi, ardından 20 piksel uzunluğunda bir boşluk, 30 piksel uzunluğunda bir kısa çizgi ve başka bir 20 piksellik boşluk olarak ayarlanmıştır.
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
Java
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
Kalıp, ş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 eğik birleşim türünü değiştirmek üzere bir eğim veya yuvarlak JointType
belirtebilirsiniz.
Aşağıdaki örnekte, bir çok çizgiye yuvarlak bir eklem türü uygulanmaktadı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. Noktalar her zaman dairesel olduğundan eklem türleri 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.
Stili PolylineOptions.startCap
ve PolylineOptions.endCap
içinde ayarlayın veya uygun alıcı ve ayarlayıcı 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, uç kapağı için özel bir bitmap 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, kapak için bitmap resmini tasarlarken resmin orijinal boyutunda kullandığınız çizgi genişliğidir. Varsayılan referans çizgi 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 boyutuna göre istediğiniz genişliğini çizin.
Bit eşlemeyi 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. Segmentler koleksiyonu olarak tanımlanmadıkları için 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. Geodez segmentler, dünyanın yüzeyinde (küre) en kısa yolu izleyen ve genellikle Mercator projeksiyonuna sahip bir haritada kavisli çizgiler olarak görünen segmentlerdir. Geodeziden olmayan segmentler haritada düz çizgiler olarak çizilir.
*Options.geodesic()
işlevini çağırarak bu özelliği şeklin seçenek nesnesinde ayarlayın. Burada true
, segmentlerin jeodezik olarak çizilmesi gerektiğini, false
ise segmentlerin düz çizgiler olarak çizilmesi gerektiğini belirtir.
Belirtilmemişse varsayılan olarak jeodezik olmayan segmentler (false
) kullanılır.
Şekil haritaya eklendikten sonra isGeodesic()
çağrı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-endeksine sahip bir yer paylaşımı, daha düşük Z-endeksine sahip yer paylaşımlarının üzerinde çizilir. Aynı z-endeksine sahip iki yer paylaşımı, rastgele bir sırada çizilir.
İşaretçilerin, diğer yer paylaşımlarının z-dizininden bağımsız olarak her zaman diğer yer paylaşımlarının üzerinde çizildiğini unutmayın.
*Options.zIndex()
işlevini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın.
Belirtilmemişse varsayılan z-dizin değeri 0
olur. Şekil haritaya eklendikten sonra getZIndex()
çağrılarak z-dizin erişilebilir ve setZIndex()
çağrılarak değiştirilebilir.
Görünürlük
Görünürlük, şeklin haritada çizilip çizilmeyeceğini belirtir. true
çizileceğini, false
ise çizilmeyeceğini gösterir. Bu seçenek, bir şekli haritada geçici olarak göstermemenize olanak tanır. Bir şekli haritadan kalıcı olarak kaldırmak için ilgili şekli remove()
ile arayın.
*Options.visible()
işlevini çağırarak bu özelliği şeklin seçenekler nesnesinde ayarlayın. Belirtilmemişse varsayılan görünürlük true
olur.
Şekil haritaya eklendikten sonra isVisible()
çağrı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, bir veri nesnesini poli çizgiyle depolamak için Polyline.setTag()
, veri nesnesini almak için Polyline.getTag()
çağrısını yapın.
Aşağıdaki kod, belirtilen çoklu çizgi için rastgele bir etiket (A
) tanımlar:
Kotlin
val polyline = map.addPolyline( PolylineOptions() .clickable(true) .add( LatLng(-35.016, 143.321), LatLng(-34.747, 145.592), LatLng(-34.364, 147.891), LatLng(-33.501, 150.217), LatLng(-32.306, 149.248), LatLng(-32.491, 147.309) ) ) polyline.tag = "A"
Java
Polyline polyline = map.addPolyline((new PolylineOptions()) .clickable(true) .add(new LatLng(-35.016, 143.321), new LatLng(-34.747, 145.592), new LatLng(-34.364, 147.891), new LatLng(-33.501, 150.217), new LatLng(-32.306, 149.248), new LatLng(-32.491, 147.309))); polyline.setTag("A");
Şekillerle veri depolamak ve almak yararlı olduğu senaryolara dair bazı örnekleri aşağıda bulabilirsiniz:
- Uygulamanızda farklı şekil türleri olabilir ve kullanıcı bunları tıkladığında farklı şekilde işlemek isteyebilirsiniz.
- Benzersiz kayıt tanımlayıcıları olan bir sistemle arayüz oluşturmanız durumunda şekiller, söz konusu sistemdeki belirli kayıtları temsil eder.
- Şekil verileri, şeklin z-endeksini belirlemek için bir öncelik belirtebilir.