Я пытаюсь использовать локальный файл Json для отображения маркеров на API карт Google.Проблема в том, что я получаю эту ошибку.
W / System.err: org.json.JSONException: Value {"предсказания": [{"description": "ИГРА Пейсли, Хай-стрит, Пейсли, UK "," id ":" d4fafbac99296d0a545170bb9af984e6251ac917 "," matched_substrings ": [{" length ": 4," offset ": 0}]," place_id ":" ChIJN0z6gTdJiEgREKQBicnWiKhIK "": {" main_text ":" GAME Paisley "," main_text_matched_substrings ": [{" length ": 4," offset ": 0}], "cond_text": "High Street, Paisley, UK"}, "Terms":[{"offset": 0, "value": "GAME Paisley"}, {"offset": 14, "value": "High Street"}, {"offset": 27, "value": "Paisley"}, {"offset": 36, "value": "UK"}], "types": ["creation"]}, {"description": "GAME Glasgow Union Street, Union Street, Глазго, Великобритания", "id":" 9579c1d2df7575a2eb479ccd987cf29ab0ab9c6e», "matched_substrings": [{ "длина": 4, "смещение": 0}], "place_id": "ChIJ2YlAjJ5GiEgRu7aBLOFlkkc", "ссылка": "ChIJ2YlAjJ5GiEgRu7aBLOFlkkc", "structured_formatting": { "main_text": "GAME Glasgow Union Street", "main_text_mat"ched_substrings ": [{" length ": 4," offset ": 0}], "cond_text": "Юнион-стрит, Глазго, Великобритания"}, "term": [{"offset": 0, "value": "GAME Glasgow Union Street "}, {" offset ": 27," value ":" Union Street "}, {" offset ": 41," value ":" Glasgow "}, {" offset ": 50," value ": "UK"}], "types": ["creation"]}, {"description": "Игра, площадь Святого Еноха, Глазго, Великобритания", "id": "582edc64f3d6654d8ff9a8da364c37a8e0544102", "matched_substrings": [{"длина ": 4," смещение ": 0}]," place_id ":" ChIJq2yljp5GiEgRpsnAfUFKGEA " "ссылка": "ChIJq2yljp5GiEgRpsnAfUFKGEA", "structured_formatting": { "main_text": "Игра", "main_text_matched_substrings": [{" длина": 4," offset ": 0}], "cond_text": "Площадь Святого Иноха, Глазго, Великобритания"}, "term": [{"offset": 0, "value": "Game"}, {"смещение ": 6," значение ":" Площадь Святого Еноха "}, {" смещение ": 26," значение ":" Глазго "}, {" смещение ": 35," значение ":" Великобритания "}],"types ": [" creation "]}, {" description ":" GAME Glasgow King's Inch Road, King's Inch Road, Глазго, Великобритания "," id ":" b60dbbc529f25226dfee4c05c80de8e92137588d "," matched_substrings ": [{" length ": 4, "смещение": 0}], "PLAce_id ":" ChIJv2Te_ENPiEgRknxQydZhR8Q "," reference ":" ChIJv2Te_ENPiEgRknxQydZhR8Q "," structd_formatting ": {" main_text ":" Glasgow King's Inch Road ", длина строки: 0: [}): "______"], "cond_text ":" King's Inch Road, Глазго, Великобритания "}," term ": [{" offset ": 0," value ":" GAME Glasgow King's Inch Road "}, {" offset ": 31,"value ":" King's Inch Road "}, {" offset ": 49," value ":" Glasgow "}, {" offset ": 58," value ":" UK "}]," types ": [" creation"]}, {" description ":" GAME, Cowglen Road, Glasgow, UK "," id ":" 86a4ed10b3b9b609f68533f1c47dc8f9ae5d2aee "," matched_substrings ": [{" length ": 4,« offset »: 0}], place_id":" ChIJT3vEiYRIiEgR4EIqP8jmL6o», "справочник": "ChIJT3vEiYRIiEgR4EIqP8jmL6o", "structured_formatting": { "main_text": "игра", "main_text_matched_substrings": [{ "длина": 4, "смещение": 0}], "secondary_text": "Cowglen Road, Глазго, Великобритания"}, "term": [{"offset": 0, "value": "GAME"}, {"offset": 6, "value": "Cowglen Road"}, {"смещение": 20, "значение": "Глазго"}, { "смещение": 29, "значение": "UK"}], "типы": [ "создание"]}], "статус": "OK"} of type org.json.JSONObject не может быть преобразовано в JSONArray W / System.err: в org.json.JSON.typeMismatch (JSON.java:111) в org.json.JSONArray. (JSONArray.java:96) в org.json.JSONArray. (JSONArray.java:108) на странице поблизостиMapsActivity.java:102)
at android.os.AsyncTask$2.call(AsyncTask.java:304) W/System.err: at
java.util.concurrent.FutureTask.run (FutureTask.java:237) в android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:243) W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:607) в java.lang.Thread.run (Thread.java:762)
Это код активности моей карты
@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(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
gps = new TrackGPS(MapsActivity.this);
new AsyncTaskGetMareker().execute();
/*
if(gps.canGetLocation()){
currentLoc= new LatLng(gps.getLatitude(),gps.getLongitude());
Log.d(TAG, "onMapReady: Got Location: " +gps.getLatitude() + " " + gps.getLongitude());
// Add a marker in Sydney and move the camera
mMap.addMarker(new MarkerOptions()
.position(currentLoc)
.title("CurrentLocation"));
Log.d(TAG, "onMapReady: Displaying Map");
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLoc,15));
}else{
gps.showAlert();
}
*/
}
public String getJSONFromAssets() {
String json = null;
try {
InputStream inputData = getAssets().open("gameStores.json");
int size = inputData.available();
byte[] buffer = new byte[size];
inputData.read(buffer);
inputData.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
private class AsyncTaskGetMareker extends AsyncTask<String , String, JSONArray> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected JSONArray doInBackground(String... strings) {
String stationsJsonString = getJSONFromAssets();
try {
JSONArray stationsJsonArray = new JSONArray(stationsJsonString);
return stationsJsonArray;
} catch (JSONException e) {
e.printStackTrace();
}
//This will only happen if an exception is thrown above:
return null;
}
protected void onPostExecute (JSONArray result){
if (result !=null){
for (int i =0; i <result.length(); i++){
JSONObject jsonObject= null;
try {
jsonObject= result.getJSONObject(i);
String name=jsonObject.getString("name");
String lat=jsonObject.getString("lat");
String lang=jsonObject.getString("lang");
drawMarker(new LatLng(Double.parseDouble(lat),
Double.parseDouble(lang)), name);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
private void drawMarker(LatLng point, String name) {
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(point);
markerOptions.snippet(name);
mMap.addMarker(markerOptions);
}
}
Это мой файл json
>
{ "predictions" : [
> {
> "description" : "GAME Paisley, High Street, Paisley, UK",
> "id" : "d4fafbac99296d0a545170bb9af984e6251ac917",
> "matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "place_id" : "ChIJN0z6gTdJiEgREKQBicnWcAs",
> "reference" : "ChIJN0z6gTdJiEgREKQBicnWcAs",
> "structured_formatting" : {
> "main_text" : "GAME Paisley",
> "main_text_matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "secondary_text" : "High Street, Paisley, UK"
> },
> "terms" : [
> {
> "offset" : 0,
> "value" : "GAME Paisley"
> },
> {
> "offset" : 14,
> "value" : "High Street"
> },
> {
> "offset" : 27,
> "value" : "Paisley"
> },
> {
> "offset" : 36,
> "value" : "UK"
> }
> ],
> "types" : [ "establishment" ]
> },
> {
> "description" : "GAME Glasgow Union Street, Union Street, Glasgow, UK",
> "id" : "9579c1d2df7575a2eb479ccd987cf29ab0ab9c6e",
> "matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "place_id" : "ChIJ2YlAjJ5GiEgRu7aBLOFlkkc",
> "reference" : "ChIJ2YlAjJ5GiEgRu7aBLOFlkkc",
> "structured_formatting" : {
> "main_text" : "GAME Glasgow Union Street",
> "main_text_matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "secondary_text" : "Union Street, Glasgow, UK"
> },
> "terms" : [
> {
> "offset" : 0,
> "value" : "GAME Glasgow Union Street"
> },
> {
> "offset" : 27,
> "value" : "Union Street"
> },
> {
> "offset" : 41,
> "value" : "Glasgow"
> },
> {
> "offset" : 50,
> "value" : "UK"
> }
> ],
> "types" : [ "establishment" ]
> },
> {
> "description" : "Game, Saint Enoch Square, Glasgow, UK",
> "id" : "582edc64f3d6654d8ff9a8da364c37a8e0544102",
> "matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "place_id" : "ChIJq2yljp5GiEgRpsnAfUFKGEA",
> "reference" : "ChIJq2yljp5GiEgRpsnAfUFKGEA",
> "structured_formatting" : {
> "main_text" : "Game",
> "main_text_matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "secondary_text" : "Saint Enoch Square, Glasgow, UK"
> },
> "terms" : [
> {
> "offset" : 0,
> "value" : "Game"
> },
> {
> "offset" : 6,
> "value" : "Saint Enoch Square"
> },
> {
> "offset" : 26,
> "value" : "Glasgow"
> },
> {
> "offset" : 35,
> "value" : "UK"
> }
> ],
> "types" : [ "establishment" ]
> },
> {
> "description" : "GAME Glasgow King's Inch Road, King's Inch Road, Glasgow, UK",
> "id" : "b60dbbc529f25226dfee4c05c80de8e92137588d",
> "matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "place_id" : "ChIJv2Te_ENPiEgRknxQydZhR8Q",
> "reference" : "ChIJv2Te_ENPiEgRknxQydZhR8Q",
> "structured_formatting" : {
> "main_text" : "GAME Glasgow King's Inch Road",
> "main_text_matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "secondary_text" : "King's Inch Road, Glasgow, UK"
> },
> "terms" : [
> {
> "offset" : 0,
> "value" : "GAME Glasgow King's Inch Road"
> },
> {
> "offset" : 31,
> "value" : "King's Inch Road"
> },
> {
> "offset" : 49,
> "value" : "Glasgow"
> },
> {
> "offset" : 58,
> "value" : "UK"
> }
> ],
> "types" : [ "establishment" ]
> },
> {
> "description" : "GAME, Cowglen Road, Glasgow, UK",
> "id" : "86a4ed10b3b9b609f68533f1c47dc8f9ae5d2aee",
> "matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "place_id" : "ChIJT3vEiYRIiEgR4EIqP8jmL6o",
> "reference" : "ChIJT3vEiYRIiEgR4EIqP8jmL6o",
> "structured_formatting" : {
> "main_text" : "GAME",
> "main_text_matched_substrings" : [
> {
> "length" : 4,
> "offset" : 0
> }
> ],
> "secondary_text" : "Cowglen Road, Glasgow, UK"
> },
> "terms" : [
> {
> "offset" : 0,
> "value" : "GAME"
> },
> {
> "offset" : 6,
> "value" : "Cowglen Road"
> },
> {
> "offset" : 20,
> "value" : "Glasgow"
> },
> {
> "offset" : 29,
> "value" : "UK"
> }
> ],
> "types" : [ "establishment" ]
> } ], "status" : "OK" }