Aby zastosować style linii i wypełnienia do wielokątów granicy w warstwie cech:
Utwórz funkcję fabryczną stylu, która stosuje
FeatureLayer.StyleFactory
za pomocą prostego interfejsu online. Ta funkcja definiuje logikę określania stylu warstwy cech.Zadzwoń do nas
FeatureLayer.setFeatureStyle()
aby zastosować funkcję fabryczną stylu do warstwy cech.
Na poniższej przykładowej mapie przedstawiono zaznaczanie wielokąta granicy dla miejsca pojedynczego regionu w warstwie cech Rejon.
Utwórz funkcję fabryczną stylu
Funkcja fabryczna stylu jest stosowana do każdego wielokąta w obiekcie, którego dotyczy problem.
podczas ustawiania funkcji w warstwie cech. Ta funkcja musi
zwraca FeatureStyle
który określa styl wielokąta.
Maps SDK na Androida przekazuje
Feature
do funkcji fabrycznej stylu. Instancja Feature
reprezentuje
funkcji, dając Ci dostęp do metadanych w fabryce stylów
.
Funkcja fabryczna stylu powinna zawsze zwracać spójne wyniki, jeśli jest zastosowano. Na przykład jeśli chcesz losowo pokolorować zestaw obiektów, część losowa nie powinna mieć miejsca w funkcji stylu cech, ponieważ mogą spowodować niezamierzone skutki.
Ponieważ funkcja ta działa po wszystkich elementach w warstwie, optymalizacja są ważne. Aby uniknąć problemów z czasem renderowania:
Włącz tylko potrzebne warstwy cech.
Wywołaj funkcję
FeatureLayer.setFeatureStyle(null)
, gdy warstwa cech nie jest już w użyciu.
Ustaw kreskę i wypełnienie wielokąta
Podczas określania stylu wielokąta granicy w funkcji fabryki stylów możesz ustawić:
Kolor kreski i przezroczystość obramowania wielokąta w formacie kolorów ARGB. zgodnie z definicją
Color
zajęcia. Wartością domyślną jest przezroczysty (0x00000000).Szerokość kreski obramowania wielokąta w pikselach ekranu. Wartość domyślna wynosi 2.
kolor wypełnienia i przezroczystość wielokąta w formacie kolorów ARGB, zgodnie z zdefiniowane przez
Color
zajęcia. Wartością domyślną jest przezroczysty (0x00000000).
Wyszukaj identyfikatory miejsc, aby kierować na obiekty
Wiele aplikacji stosuje style do obiektu na podstawie jego lokalizacji. Dla: np. zastosować styl do różnych krajów, terytoriów i regionach. Lokalizacja obiektu jest reprezentowana przez identyfikator miejsca.
Identyfikatory miejsc jednoznacznie identyfikują miejsce w bazie danych Miejsc Google i w Google Mapy. Aby uzyskać identyfikator miejsca:
- Korzystanie z interfejsów Places API i geokodowania aby wyszukiwać regiony według nazwy i uzyskiwać identyfikatory miejsc w tych regionach określonych granicach.
- Uzyskiwanie danych ze zdarzeń kliknięcia Powoduje to zwrócenie funkcji odpowiadającej klikniętemu regionowi, co zapewnia dostęp do identyfikatora miejsca i kategorii typu cechy.
Zasięg różni się w zależności od regionu. Zobacz Zasięg granic Google .
Nazwy geograficzne pochodzą z wielu źródeł, takich jak USGS Board ds. Nazw geograficznych, oraz Stany Zjednoczone Pliki dziennika.
Użyj funkcji PlaceFeature, aby uzyskać identyfikator miejsca
PlaceFeature
class to podklasa klasy Feature
.
Reprezentuje obiekt miejsca (element z identyfikatorem miejsca), który obejmuje
cechy typu ADMINISTRATIVE_AREA_LEVEL_1
, ADMINISTRATIVE_AREA_LEVEL_2
,
COUNTRY
, LOCALITY
, POSTAL_CODE
i SCHOOL_DISTRICT
.
Jeśli identyfikator miejsca jest dostępny,
Maps SDK na Androida przekazuje instancję PlaceFeature
do fabryki stylów
dzięki czemu można określić lokalizację obiektu.
Przykład w fabryce stylu
W tym przykładzie zastosowano fabryczną funkcję stylu do wielokąta w rejonie
warstwy cech. Funkcja fabryki stylu określa identyfikator miejsca obiektu
za pomocą instancji PlaceFeature
. Jeśli identyfikator miejsca to Hana na Hawajach,
funkcja zastosuje do wielokąta niestandardowy styl wypełnienia i kreski:
W razie potrzeby wykonaj czynności opisane w Pierwsze kroki aby utworzyć nowy identyfikator i styl mapy. Pamiętaj, aby włączyć opcję Rejon warstwy cech.
Uzyskaj odwołanie do warstwy cech Rejon przy zainicjowaniu mapy.
Java
private FeatureLayer localityLayer;
@Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
// Apply style factory function to LOCALITY layer. styleLocalityLayer(); }Kotlin
private var localityLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
// Apply style factory function to LOCALITY layer. styleLocalityLayer() }Utwórz funkcję fabryczną stylu i zastosuj ją do miejscowości warstwy cech.
W poniższym przykładzie funkcja stosuje się tylko wtedy, gdy miejsce Identyfikator obiektu dotyczy Hana na Hawajach („ChIJ0zQtYiWsVHkRk8lRoB1RNPo”). Jeśli podany identyfikator miejsca nie odnosi się do Hana, Hawaje, styl nie jest zastosowano.
Java
private void styleLocalityLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
// Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }Kotlin
private fun styleLocalityLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
// Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }
Usuwanie stylu z warstwy
Aby usunąć styl z warstwy, wywołaj FeatureLayer.setFeatureStyle(null)
.