Android için Google Haritalar API'sı, bunları uygulamanıza göre özelleştirmek için haritalarınıza şekil eklemenin basit yollarını sunar.
Polyline
istediğiniz şekilde şekil oluşturabilen ve haritadaki yolları ve rotaları işaretlemek için kullanılabilen bir dizi bağlı çizgi segmentidir.Polygon
, haritadaki alanları işaretlemek için kullanılabilecek kapalı bir şekildir.Circle
, Dünya üzerindeki bir dairenin harita üzerinde çizilen coğrafi olarak doğru bir tahminidir.
Tüm bu şekiller için çeşitli özellikler değiştirerek bunların görünümünü özelleştirebilirsiniz.
Kod örnekleri
Alanları ve rotaları temsil eden poligonlar ve çoklu çizgiler eklemeyle ilgili eğitim, basit bir Android uygulaması için tüm kodu içerir.
Buna ek olarak, 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 dizi LatLng
konumdan oluşur ve bu konumları belirli bir sırayla bağlayan bir dizi satır segmenti oluşturur.
Bu videoda, harita üzerindeki bir yolu çizmek için çoklu çizgiler kullanarak kullanıcılarınızın gidecekleri yere ulaşmalarına nasıl yardımcı olabileceğinize dair fikir verilmektedir.
Çoklu Çizgi oluşturmak için önce bir PolylineOptions
nesnesi oluşturun ve bu nesneye nokta ekleyin. Noktalar yeryüzündeki bir noktayı temsil eder ve LatLng
nesnesi olarak ifade edilir. Çizgi segmentleri, noktalar arasında PolylineOptions
nesnesine eklenme 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ığına dikkat edin. Böylece tek seferde birden çok nokta ekleyebilirsiniz (puanlar listede zaten varsa PolylineOptions.addAll(Iterable<LatLng>)
çağrısı da yapabilirsiniz).
Ardından, GoogleMap.addPolyline(PolylineOptions)
ç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'i bir haritaya nasıl dikdörtgen ekleneceğini gösterir:
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);
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)
Dikdörtgen, aşağıda gösterildiği gibi haritada görünür:
Ekledikten sonra çoklu çizginin şeklini 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 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.
- Kademeli çoklu çizgiler, bir çoklu çizgiyi iki renk gradyanı kullanarak renklendirir.
- Eşlenen çoklu çizgiler, tekrarlanan bit eşlemleri kullanarak bir çoklu çizginin stilini belirler.
Çoklu Çizgi Özelleştirmeleri'ni kullanmak istiyorsanız Android için Haritalar SDK'sının 18.1.0 veya sonraki bir sürümünü kullanmanız ve Android için en son Haritalar SDK'sını kullanmanız gerekir.
Çok renkli çoklu çizgi oluşturma
Bir çoklu çizginin bölümlerini tek tek renklendirmek için aralıkları kullanabilir ve bunları StyleSpan
nesneleri oluşturup addSpan()
veya addSpans()
yöntemlerini kullanarak PolylineOptions
öğesine ekleyebilirsiniz. Dizideki her öğe varsayılan olarak, ilgili satır segmentinin rengini belirler. Aşağıdaki örnekte, kırmızı ve yeşil segmentli bir çoklu çizgi oluşturmak için segment renklerinin ayarlanması gösterilmektedir:
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)));
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)) )
Gradyan çoklu çizgisi oluşturma
Fırçanın başlangıç ve bitiş renklerini belirtmek için bir 32 bit alfa-kırmızı-mavi (ARGB) tam sayı belirterek bir renk geçişi tanımlayabilirsiniz. PolylineOptions.addSpan()
çağırarak bu özelliği şeklin seçenekler nesnesine ayarlayın.
Aşağıdaki örnekte, Woodland Park Hayvanat Bahçesi'nden Kirkland, WA'ya kırmızı-sarı gradyan çoklu çizginin nasıl oluşturulacağı gösterilmektedir.
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())));
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() ) ) )
Damgalı çoklu çizgi oluşturma
Çoklu çizginin görünümünü tekrar eden bit eşlem dokusuna ayarlayabilirsiniz. Bunu yapmak için bir StampStyle
/TextureStyle
oluşturun ve ardından burada gösterildiği gibi PolylineOptions.addSpan()
çağrısı yaparak şeklin seçenekler nesnesinde bu özelliği ayarlayın:
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));
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) )
Çoklu çizgi etkinlikleri
Çoklu çizgiler varsayılan olarak tıklanabilir değildir. Polyline.setClickable(boolean)
yöntemini çağırarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.
Tıklanabilir bir çizgi üzerindeki etkinlikleri tıklamak için OnPolylineClickListener
kullanın. Bu dinleyiciyi haritada ayarlamak için GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
numaralı telefonu arayın.
Bir kullanıcı bir çoklu çizgiyi tıkladığında onPolylineClick(Polyline)
geri çağırması alırsınız.
Poligonlar
Polygon
nesneleri, sıralı bir dizideki bir dizi koordinattan oluşan Polyline
nesnelerine benzer. Ancak, çokgenler açık uçlu olmak yerine, iç kısmı doldurulmuş bir kapalı döngü içindeki bölgeleri tanımlamak için tasarlanmıştır.
Polyline
öğesine yaptığınız gibi haritaya Polygon
öğesi de ekleyebilirsiniz. İlk olarak bir PolygonOptions
nesnesi oluşturun ve nesneye birkaç nokta ekleyin. Bu noktalar, poligonun ana hatlarını oluşturur.
Daha sonra, çokgeni haritaya eklemek için GoogleMap.addPolygon(PolygonOptions)
çağırabilirsiniz. Bu durumda, Polygon
nesnesi döndürülür.
Aşağıdaki kod snippet'i bir haritaya dikdörtgen ekler.
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);
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)
Eklendikten sonra poligonun şeklini değiştirmek için Polygon.setPoints()
çağırabilir ve poligonun ana hatları için yeni bir nokta listesi sağlayabilirsiniz.
Çokgenin görünümünü hem haritaya eklemeden önce hem de haritaya eklendikten sonra özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki görünümleri özelleştirme bölümüne bakın.
Poligon otomatik tamamlama
Yukarıdaki örnekte bulunan Poligon, beş koordinattan oluşur ancak ilk ve son koordinatların aynı konumu temsil ettiğine dikkat edin. Bu, döngüyü tanımlar. Ancak, poligonlar kapalı alanları tanımladığından, bu son koordinasyonu tanımlamanız gerekmez. Son koordinat ilkinden farklıysa API, ilk koordinatın koordinat dizisinin sonuna eklenmesiyle poligonu otomatik olarak "kapatır".
Aşağıdaki iki poligon eşdeğerdir ve her biri için polygon.getPoints()
çağrıldığında 4 noktanın tamamı döndürülür.
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));
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) )
Boş bir çokgen oluşturma
Birden çok yol, doldurulmuş halkalar veya "poğaçalar" (poligon alanları, poligonun içinde "adalar" olarak görünür) gibi karmaşık şekiller oluşturmak üzere tek bir Polygon
nesnesinde birleştirilebilir. Karmaşık şekiller her zaman birden fazla daha basit
yolun bileşimidir.
Aynı alanda iki yol tanımlanmalıdır. İki bölgeden büyük olanı dolgu alanını tanımlar ve ek seçenekleri olmayan basit bir poligondur.
Ardından addHole()
yöntemine ikinci bir yol girin. İkinci küçük yol daha büyük bir yol tarafından kaplanırsa poligonun bir parçası kaldırılmış gibi görünür. Delik, çokgenin ana hatlarıyla kesişiyorsa çokgen olmadan dolgu oluşturulur.
Aşağıdaki snippet, daha küçük bir dikdörtgen deliğe sahip tek bir dikdörtgen oluşturur.
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));
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) )
İçi boş çokgen, 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 etkinlikleri tıklamak 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ğırması alırsınız.
Daireler
Haritalar API'si, genel bir Polygon
sınıfına ek olarak yapılarını basitleştirmek için Circle
nesneleri için belirli sınıflar da içerir.
Daire oluşturmak için aşağıdaki iki özelliği belirtmeniz gerekir:
LatLng
olarakcenter
.- Metre cinsinden
radius
Daha sonra daire, dünyanın yüzeyinde belirtilen belirli bir center
öğesinden radius
metre uzaklıktaki tüm noktalar olarak tanımlanır. Haritalar API'si tarafından kullanılan Mercator projeksiyonu düz bir yüzeyde nasıl oluşturulur? Bu durum, ekvatorun yakınındayken haritada neredeyse mükemmel bir daire olarak ve daire ekvatordan uzaklaştıkça dairesel olarak gittikçe daha fazla görünür (ekranda).
Eklendikten sonra dairenin şeklini değiştirmek için Circle.setRadius()
veya Circle.setCenter()
değerlerini çağırıp yeni değerler girebilirsiniz.
Dairenin görünümünü hem haritaya eklemeden önce hem de haritaya eklendikten sonra özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki görünümleri özelleştirme bölümüne bakın.
Aşağıdaki kod snippet'i, bir CircleOptions
nesnesi oluşturup GoogleMap.addCircle(CircleOptions)
çağırarak haritaya bir daire ekler:
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);
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)
Daire etkinlikleri
Varsayılan olarak, daireler tıklanabilir değildir. GoogleMap.addCircle()
öğesini CircleOptions.clickable(boolean)
ile veya Circle.setClickable(boolean)
numarasını arayarak tıklanabilirliği etkinleştirebilir ve devre dışı bırakabilirsiniz.
Tıklanabilir bir çevredeki etkinlikleri tıklamak 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 onCircleClick(Circle)
geri çağırması alırsınız:
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); } });
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 }
Görünümleri özelleştirme
Bir şeklin görünümünü, hem haritaya eklenmeden önce (seçenekler nesnesinde istenen özelliği belirterek) hem de haritaya eklendikten sonra değiştirebilirsiniz. Alıcılar, şeklin mevcut durumuna kolayca erişebilmeniz için tüm mülklerde de görünür.
Aşağıdaki snippet'te, Melbourne'dan Perth'e kadar jeodezik segmentler içeren kalın mavi bir kalın çizgi eklenmiştir. Aşağıdaki bölümlerde bu özellikler daha ayrıntılı olarak açıklanmaktadır.
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));
Kotlin
val polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
Harita aşağıda gösterildiği gibi görüntülenir:
Not: Bunların çoğu açıklanan şekillerin herhangi birine uygulanabilir olsa da, bazı özellikler belirli şekiller için anlamlı olmayabilir (ör. Polyline'ın içi olmadığı için dolgu rengi olamaz).
Çizgi rengi
Fırça rengi, fırçanın opaklığını ve rengini belirten 32 bitlik alfa kırmızı-yeşil (ARGB) bir tam sayıdır. Bu özelliği, şeklin seçenekler nesnesinde *Options.strokeColor()
(veya çoklu çizgi durumunda PolylineOptions.color()
) çağırarak ayarlayın. Belirtilmezse varsayılan fırça rengi siyahtır (Color.BLACK
).
Şekil haritaya eklendikten sonra fırça rengine getStrokeColor()
(veya çoklu çizgi için getColor()
)
ulaşılarak erişilebilir ve setStrokeColor()
(setColor() for a polyline
) aranarak değiştirilebilir.
Dolgu rengi
Dolgu rengi yalnızca çokgenler ve daireler için geçerlidir. İç mekânları tanımlı olmadığından çoklu çizgiler için geçerli değildir. Bir poligonda, deliklerin içindeki bölgeler çokgenin iç kısmında bulunmaz ve bir dolgu rengi ayarlanırsa renklendirilmez.
Dolgu rengi, şeklin iç kısmının opaklığını ve rengini belirten 32 bitlik alfa-kırmızı-mavi (ARGB) bir tam sayıdır. *Options.fillColor()
çağırarak bu seçeneği şeklin seçenekler nesnesinde ayarlayın. Belirtilmezse varsayılan fırça rengi şeffaf olur (Color.TRANSPARENT
).
Şekil haritaya eklendikten sonra, dolgu rengine getFillColor()
aranarak erişilebilir ve setFillColor()
rengi değiştirilebilir.
Fırça genişliği
Çizgi darbesinin piksel cinsinden
(piksel) kayan genişliği. Harita yakınlaştırıldığında genişlik ölçeklendirilmez (yani bir şekil tüm yakınlaştırma düzeylerinde aynı fırça genişliğine sahip olur). Bu özelliği, şeklin seçenek nesnesinde *Options.strokeWidth()
(veya bir çoklu çizgi için PolylineOptions.width()
) çağırarak ayarlayın. Bir değer belirtilmezse varsayılan fırça 10 piksel olur.
Şekil haritaya eklendikten sonra fırça genişliğine getStrokeWidth()
(veya çoklu çizgi için getWidth()
) çağrılarak
erişilebilir ve setStrokeWidth()
(setWidth() for a polyline
) aranarak değiştirilebilir.
Fırça deseni
Varsayılan fırça deseni, çoklu çizgiler ve çokgenler ile dairelerin ana hatları için düz bir çizgidir. PatternItem
nesnelerinin özel bir darbe kalıbı belirtebilirsiniz. Burada her öğe bir tire, nokta veya boşluk olur.
Aşağıdaki örnekte, bir çoklu çizginin kalıbı bir dizi noktanın ardından sırasıyla 20 piksel uzunluğunda bir boşluk, 30 piksellik bir tire ve 20 piksellik başka bir boşluk olarak ayarlanmaktadır.
Java
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
Kalıp, şekil için belirtilen ilk köşedeki ilk desen öğesiyle başlayarak çizgi boyunca tekrar eder.
Eklem türleri
Çoklu çizgiler ve poligon ana hatları için eğimli veya yuvarlak
bir JointType
belirtebilirsiniz. Varsayılan sabit göbek.
Aşağıdaki örnekte, bir polyline yuvarlak eklem türü kullanılmaktadır:
Java
polyline.setJointType(JointType.ROUND);
Kotlin
polyline.jointType = JointType.ROUND
Ortak tür, çizgideki dahili kıvrımları etkiler. Çizginin, çizgi içeren bir fırça deseni varsa çizgi türü bir eklemi bağdaştırırken de ortak türü geçerli olur. Eklem türleri, her zaman dairesel oldukları için noktaları etkilemez.
Satır sınırları
Çoklu çizginin her ucu için bir Cap
stili belirtebilirsiniz. Seçenekler popt (varsayılan), kare, yuvarlak veya özel bit eşlemdir.
Stili PolylineOptions.startCap
ve PolylineOptions.endCap
olarak ayarlayın veya uygun alıcı ve set kullanma yöntemlerini kullanın.
Aşağıdaki snippet'te, bir çoklu çizginin başında yuvarlak bir sınır belirtilmektedir.
Java
polyline.setStartCap(new RoundCap());
Kotlin
polyline.startCap = RoundCap()
Aşağıdaki snippet, bitiş sınırı için özel bir bit eşleme belirtir:
Java
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
Kotlin
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
Özel bir bit eşlem kullandığınızda piksel cinsinden bir referans fırça genişliği belirtmelisiniz. API, bit eşlemi uygun şekilde ölçeklendirir. Referans fırça genişliği, resmin orijinal boyutunda, sınır için bit eşlem resmi tasarladığınız çizgi genişliğidir. Varsayılan referans kontur genişliği 10 pikseldir. İpucu: Referans fırça genişliğini belirlemek için bit eşlem resminizi bir resim düzenleyicide% 100 yakınlaştırma düzeyinde açın ve çizgiyle ilgili istenen genişliğin resme göre genişliğini belirleyin.
Bit eşlem 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 poligonlar ve poligonlar için geçerlidir. Segment koleksiyonu olarak tanımlanmadıkları için bu özellik daireler için geçerli değildir.
Jeodezik ayar, çokgen/çokgenin 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) takip eden ve genellikle bir Merkatör projeksiyonu bulunan bir haritada kavisli çizgiler olarak görünen segmentlerdir. Jeojetik olmayan segmentler haritada düz çizgiler olarak çizilir.
*Options.geodesic()
özelliğini çağırarak bu özelliği şeklin seçenek nesnesine ayarlayın. Burada true
, segmentlerin jeojetik olarak, false
ise segmentlerin düz çizgiler olarak çizilmesi gerektiğini belirtir.
Belirtilmemesi durumunda varsayılan, coğrafi olmayan segmentlerdir (false
).
Şekil haritaya eklendikten sonra, isGeodesic()
aranarak coğrafi ayar ayarına erişilebilir ve setGeodesic()
aranarak değiştirilebilir.
Z-endeksi
Z-endeksi, haritadaki diğer yer paylaşımlarına (diğer şekiller, zemin döşemeleri ve karo bindirmelere) göre bu şeklin yığın sırasını belirtir. Yüksek z-endeksine sahip bir bindirme, daha düşük z-endeksine sahip yer paylaşımlarının üzerine çizilir. Aynı z-endeksine sahip iki yer paylaşımı rastgele bir sırayla çizilir.
İşaretçilerin, diğer yer paylaşımlarının z-endeksinden bağımsız olarak her zaman diğer yer paylaşımlarının üzerine çizildiğini unutmayın.
*Options.zIndex()
çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın.
Belirtilmemesi halinde varsayılan Z-endeksi 0
olur. Şekil haritaya eklendikten sonra
getZIndex()
çağrısı yapılarak z-endeksine erişilebilir ve bu numara, setZIndex()
aranarak değiştirilebilir.
Görünürlük
Görünürlük, şeklin haritada çizilmesi gerekip gerekmediğini belirtir. true
, çizilmesi gerektiğini ve false
çizilmemesi gerektiğini gösterir. Harita üzerinde geçici olarak bir şekil göstermemenizi sağlar. Şekli haritadan kalıcı olarak kaldırmak için ilgili şekil üzerinde remove()
numarasını arayın.
*Options.visible()
yöntemini çağırarak şeklin seçenekler nesnesinde bu özelliği ayarlayın. Belirtilmemesi durumunda varsayılan görünürlük true
değerine ayarlanır.
Şekil haritaya eklendikten sonra, isVisible()
aranarak görünüme erişilebilir ve setVisible()
çağrılabilir.
Verileri bir şekille ilişkilendirme
Şeklin setTag()
yöntemini kullanarak rastgele veri nesnesini çoklu çizgi, poligon veya daireyle depolayabilir ve getTag()
özelliğini kullanarak nesneyi alabilirsiniz.
Örneğin, bir veri nesnesini çoklu çizgiyle depolamak için Polyline.setTag()
yöntemini ve veri nesnesini almak için Polyline.getTag()
yöntemini çağırın.
Aşağıdaki kod, belirtilen çoklu çizgi için rastgele bir etiket (A
) tanımlar:
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");
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"
Verileri şekillerle depolayıp almanın faydalı olacağı senaryolara bazı örnekler aşağıda verilmiştir:
- Uygulamanız farklı şekil türlerine hitap edebilir ve kullanıcı bunları tıkladığında bunları farklı bir şekilde ele almak istersiniz.
- Benzersiz kayıt tanımlayıcılarına sahip bir sistemle karşılaşıyor olabilirsiniz. Burada, şekillerin söz konusu sistemdeki belirli kayıtları temsil etmesi gerekir.
- Şekil verileri, şekil için z-endeksini belirlemeye öncelik verebilir.