Självstudie: Läsa in GeoJSON-data i Azure Kartor Android SDK

Den här självstudien vägleder dig genom processen att importera en GeoJSON-fil med platsdata till Azure Kartor Android SDK. I den här självstudien lär du dig att:

  • Lägg till Azure Kartor i ett Android-program.
  • Skapa en datakälla och läs in i en GeoJSON-fil från en lokal fil eller webben.
  • Visa data på kartan.
  • Interagera med data på kartorna för att visa dess information.

Kommentar

Azure Kartor Android SDK-tillbakadragning

Azure Kartor Native SDK för Android är nu inaktuell och kommer att dras tillbaka den 3/31/25. För att undvika tjänststörningar migrerar du till Azure Kartor Web SDK senast 3/31/25. Mer information finns i migreringsguiden för Azure Kartor Android SDK.

Förutsättningar

  1. Slutför snabbstarten : Skapa en Android-app. Den här självstudien utökar koden som används i den snabbstarten.
  2. Ladda ned GeoJSON-filen Exempelpunkter av intresse.

Importera GeoJSON-data från webb- eller resursmappen

De flesta GeoJSON-filer omsluter alla data i en FeatureCollection. Med det här scenariot i åtanke, om GeoJSON-filerna läses in i programmet som en sträng, kan de skickas till funktionssamlingens statiska fromJson metod, vilket deserialiserar strängen till ett GeoJSON-objekt FeatureCollection som kan läggas till på kartan.

Följande steg visar hur du importerar en GeoJSON-fil till programmet och deserialiserar den som ett GeoJSON-objekt FeatureCollection .

  1. Slutför snabbstarten : Skapa en Android-app som följande steg bygger på det här programmet.
  2. I projektpanelen i Android Studio högerklickar du på appmappen och går till New > Folder > Assets Folder.
  3. Dra och släpp geoJSON-filen Sample Points of Interest i mappen assets.
  1. Gå till filen MainActivity.java och lägg till följande kod i återanropet mapControl.onReady för händelsen i onCreate metoden. Den här koden läser in SamplePoiDataSet.json-filen från mappen assets till en datakälla med hjälp av importDataFromUrl metoden och lägger sedan till den på kartan.
//Create a data source and add it to the map.
DataSource source = new DataSource();

//Import the geojson data and add it to the data source.
source.importDataFromUrl("asset://SamplePoiDataSet.json");

//Add data source to the map.
map.sources.add(source);
  1. Gå till filen MainActivity.kt och lägg till följande kod i återanropet mapControl.onReady för händelsen i onCreate metoden. Den här koden läser in SamplePoiDataSet.json-filen från mappen assets till en datakälla med hjälp av importDataFromUrl metoden och lägger sedan till den på kartan.
//Create a data source and add it to the map.
DataSource source = new DataSource();

//Import the geojson data and add it to the data source.
source.importDataFromUrl("asset://SamplePoiDataSet.json");

//Add data source to the map.
map.sources.add(source);
  1. Med hjälp av koden för att läsa in GeoJSON-data som en datakälla måste vi nu ange hur dessa data ska visas på kartan. Det finns flera olika återgivningslager för punktdata. Bubbelskikt, symbolskikt och termisk kartskikt är de vanligaste lagren. Lägg till följande kod för att återge data i ett bubbellager i återanropet mapControl.onReady för händelsen efter koden för att importera data.
//Create a layer and add it to the map.
BubbleLayer layer = new BubbleLayer(source);
map.layers.add(layer);
//Create a layer and add it to the map.
val layer = new BubbleLayer(source)
map.layers.add(layer)
  1. I projektpanelen i Android Studio högerklickar du på layoutmappen under sökvägen app > res > layout och går till New > File. Skapa en ny fil med namnet popup_text.xml.
  2. Öppna filen popup_text.xml . Om filen öppnas i en designervy högerklickar du på skärmen och väljer Gå till XML. Kopiera och klistra in följande XML i den här filen. Den här XML-koden skapar en enkel layout som kan användas med ett popup-fönster och som innehåller en textvy.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:background="#ffffff"
    android:layout_margin="8dp"
    android:padding="10dp"

    android:layout_height="match_parent">

    <TextView
        android:id="@+id/message"
        android:layout_width="wrap_content"
        android:text=""
        android:textSize="18dp"
        android:textColor="#222"
        android:layout_height="wrap_content"
        android:width="200dp"/>

</RelativeLayout>
  1. Gå tillbaka till MainActivity.java-filen och efter koden för bubbelskiktet lägger du till följande kod för att skapa ett återanvändbart popup-fönster.
//Create a popup and add it to the map.
Popup popup = new Popup();
map.popups.add(popup);

//Close it initially.
popup.close();
  1. Gå tillbaka till filen MainActivity.kt och efter koden för bubbellagret lägger du till följande kod för att skapa ett återanvändbart popup-fönster.
//Create a popup and add it to the map.
val popup = Popup()
map.popups.add(popup)

//Close it initially.
popup.close()
  1. Lägg till följande kod för att koppla en click händelse till bubbellagret. När en bubbla i bubbellagret trycks ut utlöses händelsen och hämtar information från egenskaperna för den valda funktionen, skapar en vy med hjälp av layoutfilen popup_text.xml , skickar in den som innehåll i popup-fönstret och visar sedan popup-fönstret på funktionspositionen.
//Add a click event to the layer.
map.events.add((OnFeatureClick)(feature) -> {
    //Get the first feature and it's properties.
    Feature f = feature.get(0);
    JsonObject props = f.properties();

    //Retrieve the custom layout for the popup.
    View customView = LayoutInflater.from(this).inflate(R.layout.popup_text, null);

    //Display the name and entity type information of the feature into the text view of the popup layout.
    TextView tv = customView.findViewById(R.id.message);
    tv.setText("%s\n%s",
        f.getStringProperty("Name"),
        f.getStringProperty("EntityType")
    );

    //Get the position of the clicked feature.
    Position pos = MapMath.getPosition((Point)f.geometry());

    //Set the options on the popup.
    popup.setOptions(
            //Set the popups position.
            position(pos),

            //Set the anchor point of the popup content.
            anchor(AnchorType.BOTTOM),

            //Set the content of the popup.
            content(customView)
    );

    //Open the popup.
    popup.open();

    //Return a boolean indicating if event should be consumed or continue to bubble up.
    return false;
}, layer);
//Add a click event to the layer.
map.events.add(OnFeatureClick { feature: List<Feature> ->
    //Get the first feature and it's properties.
    val f = feature[0]
    val props = f.properties()

    //Retrieve the custom layout for the popup.
    val customView: View = LayoutInflater.from(this).inflate(R.layout.popup_text, null)

    //Display the name and entity type information of the feature into the text view of the popup layout.
    val tv = customView.findViewById<TextView>(R.id.message)
    tv.text = String.format(
        "%s\n%s",
        f.getStringProperty("Name"),
        f.getStringProperty("EntityType")
    )

    //Get the position of the clicked feature.
    val pos = MapMath.getPosition(f.geometry() as Point?)

    //Set the options on the popup.
    popup.setOptions( //Set the popups position.
        position(pos),  //Set the anchor point of the popup content.
        anchor(AnchorType.BOTTOM),  //Set the content of the popup.
        content(customView)
    )

    //Open the popup.
    popup.open()

    //Return a boolean indicating if event should be consumed or continue to bubble up.
    false
} as OnFeatureClick, layer)
  1. Kör programmet. En karta visas med bubblor överlagrade för varje plats i GeoJSON-filen. Om du trycker på en bubbla visas ett popup-fönster med namnet och entitetstypen för funktionen vidrörd.

    Karta över data från en GeoJSON-fil som visas med ett popup-fönster som öppnas när platsen knackas

Rensa resurser

Utför följande steg för att rensa resurserna från den här självstudien:

  1. Stäng Android Studio och ta bort det program som du skapade.
  2. Om du har testat programmet på en extern enhet avinstallerar du programmet från den enheten.

Nästa steg

Fler kodexempel och en interaktiv kodupplevelse: