öğretici: Azure Haritalar coğrafi json verilerini yükleme Android SDK
bu öğretici, konum verilerinin coğrafi json dosyasını Azure Haritalar Android SDK aktarma işleminde size rehberlik eder. Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Android uygulamasına Azure Haritalar ekleyin.
- Bir veri kaynağı oluşturun ve yerel bir dosyadan veya Web 'den bir GeoJSON dosyasında yükleyin.
- Haritada verileri görüntüleyin.
- Haritalarda bulunan verilerle etkileşimde bulunmak için ayrıntılarını görüntüleyin.
Önkoşullar
- Hızlı başlangıç: Android uygulaması oluşturma' yı doldurun. Bu öğretici, bu hızlı başlangıçta kullanılan kodu genişletecektir.
- Ilgi çekici geojson dosyasının örnek noktalarını indirin.
Web veya varlıklar klasöründen GeoJSON verilerini içeri aktar
Çoğu GeoJSON dosyası, içindeki tüm verileri sarın FeatureCollection . Bu senaryo göz önünde bulundurularak, GeoJSON dosyaları bir dize olarak uygulamaya yüklenirse, bu, fromJson dizeyi, eşlemenin eklenebileceği bir GeoJSON nesnesi olarak seri durumdan çıkarabilen özellik koleksiyonunun statik yöntemine iletilebilir FeatureCollection .
Aşağıdaki adımlarda, coğrafi json dosyasını uygulamaya aktarma ve coğrafi JSON nesnesi olarak serisini kaldırma işlemleri gösterilmektedir FeatureCollection .
- Hızlı başlangıç: aşağıdaki adımlar bu uygulamanın üstünde derleme yaparken Android uygulaması oluşturma ' yı doldurun.
- Android Studio 'nun Proje panelinde uygulama klasörüne sağ tıklayıp öğesine gidin
New > Folder > Assets Folder. - Ilgi çekici geojson dosyasının örnek noktalarını sürükleyin ve varlıklar klasörüne bırakın.
- MainActivity. Java dosyasına gidin ve
mapControl.onReadyyönteminin içinde olay için geri çağırma içine aşağıdaki kodu ekleyinonCreate. Bu kod, yöntemini kullanarak bir veri kaynağına varlıklar klasöründen dosya SamplePoiDataSet.js yüklerimportDataFromUrlve ardından bunu eşlemeye ekler.
//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);
- MainActivity. kt dosyasına gidin ve
mapControl.onReadyyönteminin içindeki olay için geri çağırmada aşağıdaki kodu ekleyinonCreate. Bu kod, yöntemini kullanarak bir veri kaynağına varlıklar klasöründen dosya SamplePoiDataSet.js yüklerimportDataFromUrlve ardından bunu eşlemeye ekler.
//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);
- Coğrafi JSON verilerini bir veri kaynağına yüklemek için kodu kullanarak, artık bu verilerin haritada nasıl görüntüleneceğini belirtmemiz gerekir. Nokta verileri için birkaç farklı işleme katmanı vardır; Kabarcık katmanı, sembol katmanıve ısı haritası katmanı en yaygın kullanılan katmanlardır.
mapControl.onReadyVerileri içeri aktarma kodundan sonra olay için geri çağırmada bir kabarcık katmanındaki verileri işlemek için aşağıdaki kodu ekleyin.
//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)
- Android Studio 'nun Proje panelinde yolun altındaki Düzen klasörüne sağ tıklayın
app > res > layoutve git ' e gidinNew > File. popup_text.xml adlı yeni bir dosya oluşturun. - popup_text.xml dosyasını açın. Dosya tasarımcı görünümünde açılırsa, ekrana sağ tıklayın ve "XML 'e git" i seçin. Aşağıdaki XML 'i kopyalayıp bu dosyaya yapıştırın. Bu XML, bir açılan pencerede kullanılabilen ve metin görünümü içeren basit bir düzen oluşturur.
<?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>
- MainActivity. Java dosyasına dönün ve balon katmanının kodundan sonra yeniden kullanılabilir bir açılan pencere oluşturmak için aşağıdaki kodu ekleyin.
//Create a popup and add it to the map.
Popup popup = new Popup();
map.popups.add(popup);
//Close it initially.
popup.close();
- MainActivity. kt dosyasına dönün ve balon katmanının kodundan sonra yeniden kullanılabilir bir açılan pencere oluşturmak için aşağıdaki kodu ekleyin.
//Create a popup and add it to the map.
val popup = Popup()
map.popups.add(popup)
//Close it initially.
popup.close()
- Kabarcık katmanına bir tıklama olayı eklemek için aşağıdaki kodu ekleyin. Kabarcık katmanındaki bir kabarcığa dokunulduğunda, olay başlatılır ve seçilen özelliğin özelliklerinden bazı ayrıntılar alır, popup_text.xml düzen dosyasını kullanarak bir görünüm oluşturur, açılan pencereye içerik olarak iletir ve sonra Özellikler konumunda açılan pencereyi gösterir.
//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)
Uygulamayı çalıştırın. GeoJSON dosyasındaki her konum için çakışan kabarcıklara sahip bir harita görüntülenir. Herhangi bir kabarcığa dokunduğunuzda, özelliğin adı ve varlık türü ile birlikte bir açılan pencere görüntülenir.

Kaynakları temizleme
Bu öğreticiden kaynakları temizlemek için aşağıdaki adımları uygulayın:
- Android Studio kapatın ve oluşturduğunuz uygulamayı silin.
- Uygulamayı bir dış cihazda test ederseniz, uygulamayı bu cihazdan kaldırın.
Sonraki adımlar
Daha fazla kod örneği ve etkileşimli bir kodlama deneyimi için: