Описание: Я делаю небольшое приложение отображающие маркеры но возникла проблема с использованием JSON.
Проблема: я не понимаю как осуществить передачу данных из файла , для последующего создания маркеров на их основе.Большинство примеров которые я находил были для передачи данных с сайтов( Я новичок, делаю для android в Android studio вот пример:
.json:
{
"markerss":[
{
"title": "West",
"lat": 53.223798,
"lng": 44.889040,
"snippet": "placeinformation2010"
},
{
"title": "East",
"lat": 53.2220,
"lng": 44.8799,
"snippet": "placeinformation102"
}
]
}
.java:
public class MapsActivity extends FragmentActivity implements
OnMapReadyCallback {
GoogleMap mMap = null;
private static final LatLng place1 = new LatLng(53.223798, 44.889040);
private static final LatLng place2 = new LatLng(53.2220, 44.8799);
// Решил попробовать сделать перемененные для последующей и работы ,тип ближайшей
Marker mPlace1;
Marker mPlace2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(41.889, -87.622), 10));
// Создание маркеров и подробная их подробная информация
mPlace1 = mMap.addMarker(new MarkerOptions()
.position(place1)
.title("West")
.anchor(0.0f, 1.0f)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.kebab))
.snippet("dsf"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(place1));
mPlace2 = mMap.addMarker(new MarkerOptions()
.position(place2)
.title("East")
.anchor(0.0f, 1.0f)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.kebab))
.snippet("edfjk"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(place2));
}
}
Если я вас правильно понял, то вы хотите хранить JSON
строку в памяти телефона и работать локально.
В таком случае вы должны хранить ваш файл coordinates.json
в папке assets
и оттуда считывать при необходимости.
Вот вам метод для получения JSON
строки из папки assets
:
public String loadJSONFromAsset() {
String json = null;
try {
InputStream is = getActivity().getAssets().open("coordinates.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
Этот метод возвращает строку Json
, то есть можете присвоить к своему переменному, например:
String coordinatesJson = loadJSONFromAsset();
JSONObject jsonObject = new JSONObject(coordinatesJson);
И дальше распарсить jsonObject
Пример:
String coordinatesJson = loadJSONFromAsset();
JSONObject jsonObject;
try {
jsonObject = new JSONObject(coordinatesJson);
JSONArray jsonArray = jsonObject.getJSONArray("markerss");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String title = jsonObject.getString("title"));
Double lat = jsonObject.getDouble("lat"));
Double lon = jsonObject.getDouble("lon"));
String snippet = jsonObject.getString("snippet"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
Попробуйте, на этом редакторе написал, главное вы поняли суть...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Не могу разобраться как часть кода разместить в другом классе и потом получить к нему доступ
При записи из JTable в Excel постоянно создается новый файл с xls, вместо создания новых листовК примеру :