Styl wielokąta granicznego

Wybierz platformę: Android iOS JavaScript

Aby zastosować style obrysu i wypełnienia do wielokątów granicznych w warstwie obiektów:

  1. Utwórz funkcję fabryki stylów, która implementuje interfejs FeatureLayer.StyleFactory. Ta funkcja definiuje logikę stylizacji warstwy funkcji.

  2. Zadzwoń do nas FeatureLayer.setFeatureStyle() aby zastosować funkcję fabryczną stylu do warstwy cech.

Na przykładowej mapie poniżej pokazano wyróżnienie wielokąta granicznego pojedynczego regionu w warstwie obiektu Miejscowość.

Zrzut ekranu przedstawiający wielokąt Hana Hawaje.

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. Jeśli na przykład chcesz losowo zabarwić zestaw cech, część losowa nie powinna być uwzględniana w funkcji stylu cech, ponieważ może to spowodować niezamierzone wyniki.

Ponieważ funkcja ta działa po wszystkich elementach w warstwie, optymalizacja są ważne. Aby uniknąć wpływu na czas renderowania:

  • Włącz tylko te warstwy funkcji, których potrzebujesz.

  • Wywołaj funkcję FeatureLayer.setFeatureStyle(null), gdy warstwa cech nie jest już w użyciu.

Ustaw kreskę i wypełnienie wielokąta

Podczas nadawania stylu wielokątowi 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 przezroczystość (0x00000000).

  • Szerokość kreski obramowania wielokąta w pikselach ekranu. Wartość domyślna wynosi 2.

  • Kolor wypełnienia i nieprzezroczystość wielokąta w formacie kolorów ARGB zdefiniowanym przez klasę Color. Wartością domyślną jest przezroczystość (0x00000000).

Wyszukiwanie identyfikatorów miejsc docelowych funkcji

Wiele aplikacji stosuje style do obiektu na podstawie jego lokalizacji. Dla: np. zastosować styl do różnych krajów, terytoriów i regionach. Lokalizacja funkcji jest reprezentowana przez identyfikator miejsca.

Identyfikatory miejsc jednoznacznie identyfikują miejsce w bazie danych Miejsc Google i w Google Mapy. Aby uzyskać identyfikator miejsca:

Zasięg różni się w zależności od regionu. Więcej informacji znajdziesz w artykule Zasięg ograniczeń Google.

Nazwy geograficzne są dostępne w wielu źródłach, takich jak USGS Board on Geographic NamesU.S. Gazetteer Files.

Użyj funkcji PlaceFeature, aby uzyskać identyfikator miejsca

Klasa PlaceFeature jest podklasą klasy Feature. Reprezentuje cechę miejsca (cechę z identyfikatorem miejsca), która obejmuje cechy typu ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODESCHOOL_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 funkcja fabryki stylów jest stosowana do wielokąta w warstwie obiektu Lokalizacja. 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:

  1. W razie potrzeby wykonaj czynności opisane w Pierwsze kroki aby utworzyć nowy identyfikator i styl mapy. Pamiętaj, aby włączyć warstwę obiektów Locality.

  2. 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() }

  3. Utwórz funkcję fabryczną stylu i zastosuj ją do miejscowości warstwy cech.

    W tym przykładzie funkcja jest stosowana tylko wtedy, gdy identyfikator miejsca odpowiadającego danej funkcji to 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 stylizacji z warstwy

Aby usunąć stylizację z warstwy, wywołaj funkcję FeatureLayer.setFeatureStyle(null).