Interfejs API Map Google na Androida oferuje kilka prostych sposobów dodawania kształtów do swoich map, aby dostosować je do swojej aplikacji.
Polyline
to seria połączonych fragmentów liniowych, które mogą tworzyć dowolne kształty. Można ich używać do zaznaczania ścieżek i tras na mapie.Polygon
to zamknięty kształt, którego można używać do zaznaczania obszary na mapie.Circle
to wierne odwzorowanie okręgu geograficznie na powierzchni Ziemi, która jest zaznaczona na mapie.
Możesz dostosować wygląd wszystkich tych kształtów, modyfikując do liczby właściwości.
Przykładowe fragmenty kodu
Samouczek dotyczący dodawania wielokąty i linie łamane do reprezentowania obszarów i tras zawiera cały kod prostej aplikacji na Androida.
Dodatkowo repozytorium API Apigee na GitHubie zawiera: przykładowe zastosowania kształtów i ich cech:
- CircleDemoActivity (Java / Kotlin): Circle
- PolygonDemoActivity (Java / Kotlin): Wielokąt
- PolylineDemoActivity (Java / Kotlin): Polyline
Linie łamane
Klasa Polyline
definiuje zbiór połączonych wierszy.
segmentów na mapie. Obiekt Polyline
składa się ze zbioru
LatLng
oraz tworzy serię segmentów liniowych,
połącz te lokalizacje w ułożonej kolejności.
Ten film zawiera pomysły na to, jak pomóc użytkownikom dotrzeć do miejsca za pomocą linii łamanych do rysowania ścieżki na mapie.
Aby utworzyć linię łamaną, najpierw utwórz obiekt PolylineOptions
.
i dodać do niego punkty. Punkty reprezentują punkt na powierzchni Ziemi,
i są wyrażone jako obiekt LatLng
. Odcinki linii są rysowane
między punktami w kolejności, w jakiej dodajesz je do
PolylineOptions
.
Aby dodać punkty do obiektu PolylineOptions
, wywołaj PolylineOptions.add()
.
Zwróć uwagę, że ta metoda przyjmuje zmienną liczbę parametrów, dzięki czemu możesz
dodaj wiele punktów jednocześnie (możesz też zadzwonić pod numer PolylineOptions.addAll(Iterable<LatLng>)
jeśli punkty są już na liście).
Następnie możesz dodać linię łamaną do mapy, wywołując
GoogleMap.addPolyline(PolylineOptions)
zwraca obiekt Polyline
, za pomocą którego możesz zmienić linię łamaną w
później.
Następujący fragment kodu pokazuje, jak dodać prostokąt do mapy:
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);
Prostokąt pojawi się na mapie w następujący sposób:
Aby zmienić kształt linii łamanej po jej dodaniu, możesz wywołać
Polyline.setPoints()
i podaj nową listę punktów dla linii łamanej.
Przed dodaniem linii łamanej możesz dostosować jej wygląd do mapy i po dodaniu jej do mapy. Zapoznaj się z sekcją na temat: Dostosowywanie wyglądu poniżej, aby dowiedzieć się więcej.
Dostosowanie linii łamanej
Wygląd linii łamanych można dostosować na kilka sposobów:
- Wielokolorowe linie łamane ustawiają segmenty linii łamanych w różnych kolorach.
- Linie łamane gradientu określają kolor linii łamanej za pomocą gradientu dwóch kolorów.
- Stemplowane linie łamane określają styl linii łamanej za pomocą powtarzających się map bitowych.
Aby korzystać z dostosowań linii łamanych, musisz korzystać z pakietu SDK Maps na Androida w wersji 18.1.0 lub nowszej oraz użyj najnowszego pakietu Maps SDK na Androida.
Tworzenie wielokolorowej linii łamanej
Za pomocą rozpiętości możesz pojedynczo kolorować segmenty linii łamanej przez utworzenie
StyleSpan
obiektów i dodaję je do PolylineOptions
za pomocą addSpan()
lub addSpans()
. Domyślnie każdy element w tablicy ustawia kolor
odpowiedniego fragmentu linii. Poniżej znajduje się przykład konfigurowania segmentu
aby utworzyć linię łamaną z segmentami czerwonym i zielonym:
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)));
Tworzenie linii łamanej gradientu
Aby zdefiniować gradient, podaj dwa 32-bitowe wartości: 2 32-bitowe: alfa-czerwony-zielony-niebieski (ARGB)
liczb całkowitych, aby określić kolor początkowy i końcowy kreski. Ustaw
na obiekt opcji kształtu przez wywołanie funkcji PolylineOptions.addSpan()
.
Poniższy przykład pokazuje proces tworzenia linii łamanej gradientu od czerwonego do żółtego na podstawie
Woodland Park w Kirkland, Waszyngton.
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())));
Tworzenie linii łamanej z pieczęciami
Możesz ustawić wygląd linii łamanej na powtarzające się tekstury bitmapy. Do zrobienia
to, utwórz StampStyle
o wartości TextureStyle
, a następnie ustaw tę usługę na
obiektu opcji kształtu przez wywołanie PolylineOptions.addSpan()
w następujący sposób:
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));
Zdarzenia linii łamanej
Domyślnie linii łamanych nie można klikać. Możesz włączyć lub wyłączyć
klikalność dzięki wywołaniu funkcji Polyline.setClickable(boolean)
.
Użyj OnPolylineClickListener
, aby:
nasłuchują zdarzeń kliknięcia na klikalnej linii łamanej. Aby ustawić ten odbiornik na mapie,
Zadzwoń pod numer GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
.
Gdy użytkownik kliknie linię łamaną, wyświetli się
onPolylineClick(Polyline)
oddzwonienie.
Wielokąty
Polygon
obiekty są podobne do Polyline
jako obiekty składające się z serii współrzędnych w określonej
kolejne wartości. Jednak wielokąty nie są otwarte, a jedynie
zdefiniuj regiony w pętli zamkniętej z wypełnionym wnętrzem.
Możesz dodać obiekt Polygon
do mapy w taki sam sposób, w jaki dodajesz
Polyline
. Najpierw utwórz obiekt PolygonOptions
i dodać do niego kilka punktów. Punkty te utworzą kontur wielokąta.
Następnie możesz dodać wielokąt do mapy, wywołując
GoogleMap.addPolygon(PolygonOptions)
, która
zwraca obiekt Polygon
.
Następujący fragment kodu dodaje prostokąt do mapy.
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);
Aby zmienić kształt wielokąta po jego dodaniu, możesz wywołać
Polygon.setPoints()
i podaj nową listę punktów do konspektu
wielokąta.
Przed dodaniem wielokąta możesz dostosować jego wygląd do mapy i po dodaniu jej do mapy. Zapoznaj się z sekcją na temat: Dostosowywanie wyglądu poniżej, aby dowiedzieć się więcej.
Autouzupełnianie wielokątów
Wielokąt w powyższym przykładzie składa się z pięciu współrzędnych, ale można zauważyć, że pierwsza i ostatnia współrzędne są w tym samym miejscu, co określa pętlę. W praktyce jednak, ponieważ wielokąty wyznaczają zamknięte obszary, nie trzeba zdefiniować ostatnią współrzędną. Jeśli ostatnia współrzędna różni się od pierwszej, funkcja Interfejs API automatycznie się zamknie wielokąt, dołączając pierwszą współrzędną przy na końcu ciągu współrzędnych.
Dwa poniższe wielokąty są równoważne i funkcja
polygon.getPoints()
za każdą odpowiedź zwróci wszystkie 4 punkty.
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));
Tworzenie pustego wielokąta
W jednym obiekcie Polygon
można połączyć wiele ścieżek, aby
tworzą złożone kształty, takie jak wypełnione pierścienie lub „pierścienie” (gdy wielokąt
obszary są widoczne wewnątrz wielokąta jako „wyspy”). Złożone kształty są zawsze
z kilku prostszych ścieżek.
Dwie ścieżki muszą być zdefiniowane w tym samym obszarze. Większa z 2 regionów
określa obszar wypełnienia i jest to prosty wielokąt bez dodatkowych opcji.
Następnie przekaż drugą ścieżkę do metody addHole()
. Gdy druga opcja jest mniejsza,
jest w pełni otoczona większą ścieżką, wydaje się, że fragment
wielokąt został usunięty. Jeśli otwór przecina kontur wielokąta,
wielokąt zostanie wyświetlony bez żadnego wypełnienia.
Poniższy fragment kodu utworzy jeden prostokąt o mniejszym, prostokątnym dziura.
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
ListL<atLng >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));
Pusty wielokąt jest widoczny na mapie w następujący sposób:
Wydarzenia Polygon
Domyślnie wielokąty nie są klikalne. Możesz włączyć lub wyłączyć
klikalność dzięki wywołaniu funkcji Polygon.setClickable(boolean)
.
Użyj OnPolygonClickListener
, aby:
nasłuchują zdarzeń kliknięcia klikalnego wielokąta. Aby ustawić ten odbiornik na mapie,
Zadzwoń pod numer GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)
.
Gdy użytkownik kliknie wielokąt, wyświetli się
onPolygonClick(Polygon)
oddzwonienie.
Kręgi
Oprócz ogólnej klasy Polygon
interfejs API Map Google zawiera też określone
klas obiektów Circle
, aby uprościć ich tworzenie.
Aby utworzyć okrąg, musisz określić dwie następujące właściwości:
center
jakoLatLng
.radius
w metrach.
Następnie definiowany jest okrąg jako zbiór wszystkich punktów na powierzchni Ziemi.
co znajduje się radius
metrów od wskazanego miejsca: center
. Z jakiegoś powodu
odwzorowanie Mercator używane w interfejsie API Map Google renderuje kulę na płaskiej powierzchni.
Gdy znajdziesz się w pobliżu
i będzie coraz bardziej nieokrągły (na ekranie),
oddala się od równika.
Aby zmienić kształt dodanego okręgu, możesz wywołać
Circle.setRadius()
lub Circle.setCenter()
i podaj nowe wartości.
Przed dodaniem kręgu możesz dostosować jego wygląd do mapy i po dodaniu jej do mapy. Zapoznaj się z sekcją na temat: Dostosowywanie wyglądu poniżej, aby dowiedzieć się więcej.
Następujący fragment kodu dodaje do mapy okrąg przez utworzenie
Obiekt CircleOptions
i wywołanie
GoogleMap.addCircle(CircleOptions)
:
Kotlin
// Instantiates a new CircleOptions object and defines the center and radius val circleOptions = CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) // In meters // Get back the mutable Circle val circle = map.addCircle(circleOptions)
Java
// Instantiates a new CircleOptions object and defines the center and radius CircleOptions circleOptions = new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000); // In meters // Get back the mutable Circle Circle circle = map.addCircle(circleOptions);
Wydarzenia związane z kręgiem
Domyślnie kręgi nie są klikalne. Możesz włączyć lub wyłączyć
klikalność, wywołując metodę GoogleMap.addCircle()
z
CircleOptions.clickable(boolean)
lub telefonicznie
Circle.setClickable(boolean)
Użyj OnCircleClickListener
, aby:
nasłuchiwać zdarzeń kliknięcia w klikalnym okręgu. Aby ustawić ten odbiornik na mapie,
Zadzwoń pod numer GoogleMap.setOnCircleClickListener(OnCircleClickListener)
.
Gdy użytkownik kliknie krąg, otrzymasz
Wywołanie zwrotne onCircleClick(Circle)
widoczne w tym przykładowym kodzie:
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 circles '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 circles' stroke color. int strokeColor = circle.getStrokeColor() ^ 0x00ffffff; circle.setStrokeColor(strokeColor); } });
Dostosowywanie wyglądu
Możesz zmienić wygląd kształtu przed dodaniem go do mapy (przez określenie żądanej właściwości w obiekcie options) lub po dodaniu go do mapy. Pobierający są są widoczne dla wszystkich usług, dzięki czemu można łatwo uzyskać dostęp do bieżących w postaci kształtu.
Następujący fragment kodu dodaje grubą niebieską linię łamaną z segmentami geodezyjnymi z z Melbourne do Perth. Właściwości te są bardziej szczegółowo objaśnione w sekcjach poniżej szczegóły.
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));
Mapa wygląda tak:
Uwaga: chociaż większość z nich ma zastosowanie do kształtów, niektóre właściwości mogą nie sensu określonych kształtów (np. linia łamana nie może mieć koloru wypełnienia, ponieważ nie ma wnętrza).
Kolor kreski
Kolor kreski to 32-bitowa liczba całkowita w formacie alfa-czerwony-zielony-niebieski (ARGB) określająca
przezroczystości i koloru linii kształtu. Ustaw tę właściwość dla kształtu
przez wywołanie *Options.strokeColor()
(lub
PolylineOptions.color()
w przypadku linii łamanej). Jeśli nie określono inaczej, parametr
Domyślny kolor kreski to czarny (Color.BLACK
).
Po dodaniu kształtu do mapy jego kolor może być dostępny przez
wywołuje getStrokeColor()
(lub getColor()
w przypadku linii łamanej) i może zostać zmieniony
aby zadzwonić do: setStrokeColor()
(setColor() for a polyline
).
Kolor wypełnienia
Kolor wypełnienia dotyczy tylko wielokątów i okręgów. Nie dotyczy linii łamanych, ponieważ nie mają zdefiniowanych wnętrz. W przypadku wielokąta regiony wewnątrz jego otworów nie są częścią wnętrza wielokąta i nie będą jeśli ustawiony jest kolor wypełnienia.
Kolor wypełnienia to 32-bitowa liczba całkowita w formacie alfa-czerwony-zielony-niebieski (ARGB) określająca
przezroczystości i koloru wewnątrz kształtu. Ustaw tę właściwość na
obiektu opcji kształtu przez wywołanie funkcji *Options.fillColor()
. Jeśli nie określono inaczej, parametr
domyślny kolor kreski jest przezroczysty (Color.TRANSPARENT
),
Po dodaniu kształtu do mapy kolor wypełnienia może być dostępny przez
getFillColor()
. Można to zmienić, dzwoniąc pod numer setFillColor()
.
Szerokość kreski
Szerokość kreski linii wyrażona w pikselach jako liczba zmiennoprzecinkowa.
(piks.). Szerokość nie skaluje się po powiększeniu mapy (tzn. kształt
takiej samej szerokości kreślenia na wszystkich poziomach powiększenia). Ustaw tę właściwość dla kształtu
obiekt opcji przez wywołanie metody *Options.strokeWidth()
(lub PolylineOptions.width()
dla linii łamanej). Jeśli nie określono inaczej, domyślna kreska ma 10 pikseli.
Po dodaniu kształtu do mapy możesz uzyskać dostęp do szerokości konturu przez:
wywołuje getStrokeWidth()
(lub getWidth()
w przypadku linii łamanej) i może zostać zmieniony
aby zadzwonić do: setStrokeWidth()
(setWidth() for a polyline
).
Styl kreski
Domyślny wzór kreski to linia ciągła dla linii łamanych i kontur
wielokąty i okręgi. Możesz określić niestandardowy wzorzec kreski
PatternItem
, gdzie każdy element jest myślnikiem, kropką lub
Poniższy przykład ustawia wzór linii łamanej na powtórzony sekwencja kropki, po której następuje przerwa o długości 20 pikseli, łącznik długości i kolejne 20 pikseli.
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
Java
ListP<atternItem >pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
Wzór powtarza się wzdłuż linii, zaczynając od pierwszego elementu wzoru na pierwszy wierzchołek określony dla kształtu.
Typy połączeń
W przypadku linii łamanych i konturów wielokątów możesz określić ścięcie lub okrąg
JointType
, aby zastąpić domyślny, stały typ połączenia ukośnego.
W przykładzie poniżej zastosowano typ złączenia okrągłego do linii łamanej:
Kotlin
polyline.jointType = JointType.ROUND
Java
polyline.setJointType(JointType.ROUND);
Typ połączenia wpływa na wewnętrzne zginania linii. Jeśli linia zawiera przekreślenie, z wzorcem zawierającym łączniki, typ połączenia ma zastosowanie również wtedy, gdy kreska pojawia się w kreskach wspólnej. Typy połączeń nie mają wpływu na kropki, ponieważ są one zawsze okrągłe.
Limity tekstu
Możesz określić styl Cap
dla każdego końca linii łamanej. Opcje
to elementy (domyślnie), kwadratowe, okrągłe lub niestandardowe.
Ustaw styl w polach PolylineOptions.startCap
oraz
PolylineOptions.endCap
lub skorzystaj z
odpowiednich metod pobierania i ustalania.
Ten fragment kodu określa okrągłe ograniczenie na początku linii łamanej.
Kotlin
polyline.startCap = RoundCap()
Java
polyline.setStartCap(new RoundCap());
Ten fragment kodu określa niestandardową mapę bitową dla reklamy po zakończeniu filmu:
Kotlin
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
Java
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
Jeśli używasz niestandardowej mapy bitowej, określ szerokość kreski w argumencie pikseli. Interfejs API odpowiednio skaluje bitmapę. Szerokość kreski referencyjnej to tę szerokość kreski użytej przy projektowaniu obrazu bitmapy oryginalne wymiary obrazu. Domyślna szerokość kreski referencyjnej to 10 pikseli. Wskazówka: aby określić szerokość kreski referencyjnej, otwórz obraz bitmapy w Powiększ 100% w edytorze obrazów i narysuj odpowiednią szerokość linii linii. względem obrazu.
Jeśli używasz
BitmapDescriptorFactory.fromResource()
aby utworzyć bitmapę, użyj zasobu niezależnego od gęstości
(nodpi).
Fragmenty geodezyjne
Ustawienie geodezyjne dotyczy tylko linii łamanych i wielokątów. Nie dotyczy w kręgach, ponieważ nie są one zdefiniowane jako zbiór segmentów.
Ustawienie geodezyjne określa sposób, w jaki odcinki linii między kolejnymi zostaną narysowane wierzchołki linii łamanej/wielokąta. Segmenty geodezyjne to takie, które pokonuj najkrótszą drogę (sferę) na powierzchni Ziemi i często są wyświetlane na mapie jako krzywe linie z odwzorowaniem Merkatora. Niegeodezyjna segmenty są rysowane na mapie jako linie proste.
Ustaw tę właściwość na obiekcie opcji kształtu, wywołując
*Options.geodesic()
, gdzie true
wskazuje, że odcinki powinny być rysowane jako
geodezja, a false
wskazuje, że odcinki powinny być narysowane jako linie proste.
Jeśli nie określono inaczej, wartość domyślna to segmenty niegeodezyjne (false
).
Po dodaniu kształtu do mapy można uzyskać dostęp do ustawień geodezyjnych
przez wywołanie isGeodesic()
. Można to zmienić, dzwoniąc pod numer setGeodesic()
.
Kolejność nakładania elementów
Kolejność nakładania elementów określa porządek stosu różnych kształtów względem innych (inne kształty, nakładki na powierzchnię i nakładki z kafelkami) na mapie. Nakładka o wysokim z-indeksie jest rysowana nad nakładkami o niższych wartościach z-index. Dwie nakładki o tej samej kolejności nakładania elementów są rysowane w dowolnej kolejności.
Pamiętaj, że znaczniki są zawsze rysowane nad innymi nakładkami, niezależnie od z-index innych nakładek.
Ustaw tę właściwość w obiekcie opcji kształtu, wywołując funkcję *Options.zIndex()
.
Jeśli nie określono inaczej, domyślna wartość z-index to 0
. Po dodaniu kształtu do
dla mapy, element z-index może być używany przez
getZIndex()
. Można to zmienić, dzwoniąc pod numer setZIndex()
.
Widoczność
Widoczność określa, czy na mapie ma być narysowany kształt, gdzie
true
oznacza, że powinien być narysowany, a false
oznacza, że nie powinien. it
pozwala tymczasowo nie wyświetlać kształtu na mapie. Aby na stałe
usuń kształt z mapy, wywołaj remove()
dla tego kształtu.
Ustaw tę właściwość w obiekcie opcji kształtu, wywołując
*Options.visible()
Jeśli nie określono inaczej, widoczność domyślna to true
.
Po dodaniu kształtu do mapy opcje widoczności można uzyskać przez
isVisible()
. Można to zmienić, dzwoniąc pod numer setVisible()
.
Powiąż dane z kształtem
Możesz przechowywać dowolny obiekt danych z linią łamaną, wielokątem lub kołem
za pomocą metody setTag()
kształtu, a potem pobierz obiekt za pomocą getTag()
.
Na przykład wywołaj Polyline.setTag()
, aby zapisać dane
obiekt z linią łamaną i wywołaj funkcję Polyline.getTag()
w celu
pobierze obiekt danych.
Poniższy kod definiuje dowolny tag (A
) dla określonej linii łamanej:
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")";
Oto kilka przykładów sytuacji, w których przechowywanie i pobieranie danych może okazać się przydatne z kształtami:
- Twoja aplikacja może obsługiwać różne typy kształtów, a Ty chcesz na nie wpływać gdy użytkownik je kliknie.
- Być może korzystasz z systemu z unikalnymi identyfikatorami rekordów, gdzie kształty reprezentują określone rekordy w tym systemie.
- Dane kształtu mogą wskazywać priorytet określający kolejność nakładania elementów kształtu.