- 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ą:
GoogleMapobiekt, w którym ma zostać wyrenderowana warstwaJSONObjectzawierają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:
GoogleMapobiekt, w którym ma zostać wyrenderowana warstwa- Lokalny plik zasobów zawierający dane GeoJSON
Contextobiekt 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,GeoJsonLineStringStylelubGeoJsonPolygonStyle. - 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,GeoJsonLineStringStylelubGeoJsonPolygonStyle. - 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.