Как мне получить координаты от GeoJSON?

#java #android #kotlin #google-maps-markers

Вопрос:

У меня возникли трудности с получением координат из файла GeoJSON. Мне удалось нарисовать многоугольник на карте, но мне нужно получить координатный лист, чтобы измерить длину маршрута и добавить маркеры. Вот мой файл GeoJSON

 {  "type": "FeatureCollection",  "features": [  {  "type": "Feature",  "properties": {"scalerank":0,"featurecla":"Admin-0 country","labelrank":2,"sovereignt":"Russia","sov_a3":"RUS","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Russia","adm0_a3":"RUS","geou_dif":0,"geounit":"Russia","gu_a3":"RUS","su_dif":0,"subunit":"Russia","su_a3":"RUS","brk_diff":0,"name":"Russia","name_long":"Russian Federation","brk_a3":"RUS","brk_name":"Russia","brk_group":null,"abbrev":"Rus.","postal":"RUS","formal_en":"Russian Federation","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Russian Federation","name_alt":null,"mapcolor7":2,"mapcolor8":5,"mapcolor9":7,"mapcolor13":7,"pop_est":140041247,"gdp_md_est":2266000,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"3. Emerging region: BRIC","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10_":"RS","iso_a2":"RU","iso_a3":"RUS","iso_n3":"643","un_a3":"643","wb_a2":"RU","wb_a3":"RUS","woe_id":23424936,"woe_id_eh":23424936,"woe_note":"Exact WOE match as country","adm0_a3_is":"RUS","adm0_a3_us":"RUS","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe amp; Central Asia","name_len":6,"long_len":18,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"RUS.geojson"},  "geometry": {  "type": "MultiPolygon",  "coordinates": [[[[132.44898522200018,42.845404364],[132.44988040500007,42.82811107000001],[132.4674585300002,42.81093984600007],[132.47771243600013,42.803900458],[132.47559655000012,42.80023834800015],[132.46713300900015,42.79682038000014],[132.458262566,42.798285223],[132.45337975400005,42.80097077000009],[132.44727623800017,42.80731842700011],[132.43946373800006,42.81753164300015],[132.4298608730002,42.82648346600017],[132.41749108200023,42.83002350500006],[132.4064233730002,42.82876211100013],[132  

оказалось, что все сводится только к геометрии

Ответ №1:

Есть 2 распространенных способа сделать это.

  1. Вы можете создать модель для своих данных ответов как a data class , используя плагин «JSON для класса Kotlin» в Android Studio. затем вы легко сможете получить доступ к свойству JSON как к объекту Kotlin.
  2. У вас есть данные JSON в виде строки. добавьте эту строку в файл уровня модуля build.gradle :
 dependencies {  //...   implementation 'com.google.code.gson:gson:2.8.9' }  

Затем вы можете проанализировать свою строку JSON с помощью Gson и получить координаты, как показано ниже:

 val jsonData = "..." val gson = Gson() val coordinates = gson.fromJson(jsonData.getJSONArray("features")[0].getJSONObject("geometry").getJSONArray("coordinates").toString(), Arraylt;Type /*your data type*/gt;::class.java).toList()