- Wprowadzenie
- Dodaj GeoJsonLayer na mapie
- Usuń tag GeoJsonLayer
- Dodaj lub usuń GeoJsonFeature
- Dostęp do funkcji GeoJsonFeatures i ich właściwości
- Określ styl GeoJsonLayer GeoJsonFeatures
- Zobacz aplikację w wersji demonstracyjnej
Wprowadzenie
GeoJSON jest rozszerzeniem danych JSON.
i reprezentuje dane geograficzne. Za pomocą tego narzędzia można przechowywać
funkcji geograficznych w formacie GeoJSON i renderować je jako warstwę
mapę. Aby dodać dane GeoJSON i z nich korzystać, wywołaj
addLayerToMap()
i removeLayerFromMap()
. Podobna
można dodawać i usuwać poszczególne funkcje,
addFeature()
i removeFeature()
i zaliczenie:
GeoJsonFeature
obiekt. Aby uzyskać dostęp do tych funkcji,
może wywołać funkcję getFeatures()
, aby uzyskać iterację wszystkich obiektów
GeoJsonFeature
dodanych do warstwy.
Możesz też ustawić style domyślne, które będą stosowane do obiektów, zanim zostaną zastosowane.
została dodana do warstwy, wywołując funkcję getDefaultPointStyle()
,
getDefaultLineStringStyle()
lub
getDefaultPolygonStyle()
i ustawianie opcji stylu w każdym z nich.
Możesz też ustawić styl dla pojedynczej osoby,
GeoJsonFeature
, dzwoniąc do: setPointStyle()
,
setLineStringStyle()
lub setPolygonStyle()
w:
i przekazywać odpowiednie obiekty stylu.
Dodaj GeoJsonLayer do swojej mapy
Aby dodać do mapy warstwę GeoJson, najpierw utwórz instancję warstwy GeoJsonLayer zajęcia. Istnieją 2 sposoby tworzenia instancji GeoJsonLayer.
Aby zaimportować dane z usługi JSONObject
, potrzebne są:
GoogleMap
obiekt, w którym ma zostać wyrenderowana warstwaJSONObject
zawierający dane GeoJSON, które należy dodać do warstwa
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
Aby zaimportować dane z lokalnego pliku GeoJSON, potrzebujesz:
GoogleMap
obiekt, w którym ma zostać wyrenderowana warstwa- Lokalny plik zasobów zawierający dane GeoJSON
Context
obiekt wymagany do otwarcia zasobu lokalnego plik
Kotlin
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
Java
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
Po utworzeniu funkcji GeoJsonLayer
wywołaj
addLayerToMap()
, aby dodać zaimportowane dane do mapy:
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
Usuwanie warstwy GeoJsonLayer
Załóżmy, że ta warstwa została dodana
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
Aby usunąć GeoJsonLayer, wywołaj removeLayerFromMap()
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
Dodawanie i usuwanie obiektu GeoJSON
Cecha w GeoJSON ma typ „feature”. Zawiera geometrię, element usługi i opcjonalnie ma ramkę ograniczającą lub identyfikator.
Możesz utworzyć GeoJsonFeature
obiektów i je dodać
do: GeoJsonLayer
.
Załóżmy, że został przez Ciebie utworzony obiekt zawierający punkt 0, 0 i argument jeden wpis we właściwościach i bez ramki ograniczającej.
Kotlin
val point = GeoJsonPoint(LatLng(0.0, 0.0)) val properties = hashMapOf("Ocean" to "South Atlantic") val pointFeature = GeoJsonFeature(point, "Origin", properties, null)
Java
GeoJsonPoint point = new GeoJsonPoint(new LatLng(0, 0)); HashMap<String, String> properties = new HashMap<>(); properties.put("Ocean", "South Atlantic"); GeoJsonFeature pointFeature = new GeoJsonFeature(point, "Origin", properties, null);
Aby dodać element do warstwy, wywołaj funkcję addFeature()
i przekaż ją
obiekt, który ma być dodany.
Kotlin
layer.addFeature(pointFeature)
Java
layer.addFeature(pointFeature);
Aby usunąć funkcję po dodaniu jej do warstwy, wywołaj
removeFeature()
i przekaż element do usunięcia.
Kotlin
layer.removeFeature(pointFeature)
Java
layer.removeFeature(pointFeature);
Dostęp do funkcji GeoJsonFeatures i ich właściwości
Aby uzyskać dostęp do wszystkich obiektów GeoJSON, które zostały dodane do warstwy, możesz
Zadzwoń do firmy getFeatures()
na urządzeniu GeoJsonLayer
, które
utworzone przez użytkowników. Spowoduje to zwrócenie iteracji o wartości GeoJsonFeatures
do których można uzyskać dostęp za pomocą pętli for, jak pokazano poniżej.
Kotlin
for (feature in layer.features) { // Do something to the feature }
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // Do something to the feature }
Użyj metod hasProperty()
i getProperty()
w:
w połączeniu z metodą getFeatures()
, aby sprawdzić, czy każdy zapisany
obiekt ma określoną właściwość i uzyskuje do niej dostęp, jeśli istnieje.
Kotlin
if (feature.hasProperty("Ocean")) { val oceanProperty = feature.getProperty("Ocean") }
Java
if (feature.hasProperty("Ocean")) { String oceanProperty = feature.getProperty("Ocean"); }
Zdarzenia kliknięcia geometrycznego GeoJSON
Za pomocą GeoJsonLayer.OnFeatureClickListener()
możesz nasłuchiwać zdarzeń kliknięcia na stronie
obiektów geometrycznych na mapie. W poniższym przykładzie zapisywany jest tytuł funkcji, gdy użytkownik
kliknie tę funkcję:
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i("GeoJsonClick", "Feature clicked: ${feature.getProperty("title")}") }
Java
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener(new Layer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("GeoJsonClick", "Feature clicked: " + feature.getProperty("title")); } });
Określanie stylu obiektu GeoJsonLayer i GeoJsonFeatures
Można ustawić style domyślne dla warstwy geograficznej lub określić styl poszczególnych obiektów w warstwie.
Style domyślne
W funkcji GeoJsonLayer można ustawić style domyślne dla dowolnych punktów, ciągów linii i wielokątów dodanych do warstwy. Style domyślne są stosowane tylko wtedy, gdy obiekt nie ma ustawionego stylu dla żadnej ze swoich geometrii. Dowolne zmiany wprowadzone w stylu domyślnym zostaną również odzwierciedlone we wszystkich elementach korzystających ze stylu domyślnego.
Aby zastosować styl domyślny, wykonaj następujące czynności:
- Pobierz odpowiedni obiekt stylu domyślnego. Może to być jeden z
GeoJsonPointStyle
,GeoJsonLineStringStyle
lubGeoJsonPolygonStyle
. - Zastosuj odpowiednie opcje do stylu.
Na przykład ten przykładowy kod pokazuje, jak zmienić punkt domyślny stylu, w którym punkty można przeciągać z tytułem i krótkim opisem.
Kotlin
val pointStyle = layer.defaultPointStyle pointStyle.isDraggable = true pointStyle.title = "Hello, World!" pointStyle.snippet = "I am a draggable marker"
Java
GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle(); pointStyle.setDraggable(true); pointStyle.setTitle("Hello, World!"); pointStyle.setSnippet("I am a draggable marker");
Style typowe dla obiektu GeoJSON
Możesz też określić styl poszczególnych elementów w warstwie. Czynności, które należy wykonać,
zastosować styl do elementów typu GeoJsonFeature
w następujący sposób.
- Utwórz odpowiedni obiekt stylu. Może to być
GeoJsonPointStyle
,GeoJsonLineStringStyle
lubGeoJsonPolygonStyle
. - Zastosuj odpowiednie opcje do stylu.
- Przekaż obiekt stylu do
odpowiednią metodę
GeoJsonFeature
, która zostaniesetPointStyle()
,setLineStringStyle()
lubsetPolygonStyle()
W ten sposób można np. dostosować styl ciągu znaków do wiersza
GeoJsonFeature
na czerwony.
Kotlin
// Create a new feature containing a linestring val lineStringArray: MutableList<LatLng> = ArrayList() lineStringArray.add(LatLng(0.0, 0.0)) lineStringArray.add(LatLng(50.0, 50.0)) val lineString = GeoJsonLineString(lineStringArray) val lineStringFeature = GeoJsonFeature(lineString, null, null, null) // Set the color of the linestring to red val lineStringStyle = GeoJsonLineStringStyle() lineStringStyle.color = Color.RED // Set the style of the feature lineStringFeature.lineStringStyle = lineStringStyle
Java
// Create a new feature containing a linestring List<LatLng> lineStringArray = new ArrayList<LatLng>(); lineStringArray.add(new LatLng(0, 0)); lineStringArray.add(new LatLng(50, 50)); GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray); GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null); // Set the color of the linestring to red GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle(); lineStringStyle.setColor(Color.RED); // Set the style of the feature lineStringFeature.setLineStringStyle(lineStringStyle);
Zobacz aplikację w wersji demonstracyjnej
Przykład importowania pliku GeoJSON z adresu URL i tworzenia warstwy
obejrzyj GeoJsonDemoActivity
w aplikacji w wersji demonstracyjnej
z biblioteką narzędziową. Z przewodnika konfiguracji dowiesz się,
aby uruchomić aplikację w wersji demonstracyjnej.