Мое приложение извлекает JSON
из URL-адреса и анализирует маршруты от местоположения пользователя до местоположения выбранного маркера. Отладка показывает мне, что пункт назначения и источник верны, кстати, приложение застревает, когда я добавляю полилинию на карте. Вот код:Android Добавление ломаной к карте ошибки
for(int z = 0; z<list.size()-1;z++){
LatLng src= list.get(z);
LatLng dest= list.get(z+1);
PolylineOptions line= new PolylineOptions()
.add(src, dest)
.width(2)
.color(Color.BLUE).geodesic(true);
mMap.addPolyline(line);
}
А вот отредактированный LogCat:
05-20 11:44:04.698 26190-27044/com.example.marco.progettoquinta E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
Process: com.example.marco.progettoquinta, PID: 26190
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalStateException: Not on the main thread
at maps.f.g.b(Unknown Source)
at maps.z.D.a(Unknown Source)
at maps.ag.t.a(Unknown Source)
at uz.onTransact(:com.google.android.gms.DynamiteModulesB:137)
at android.os.Binder.transact(Binder.java:387)
at com.google.android.gms.maps.internal.IGoogleMapDelegate$zza$zza.addPolyline(Unknown Source)
at com.google.android.gms.maps.GoogleMap.addPolyline(Unknown Source)
at com.example.marco.progettoquinta.MapsActivity.drawPath(MapsActivity.java:210)
at com.example.marco.progettoquinta.JSONParser.getJSONFromUrl(JSONParser.java:80)
at com.example.marco.progettoquinta.JSONParser.doInBackground(JSONParser.java:35)
at com.example.marco.progettoquinta.JSONParser.doInBackground(JSONParser.java:18)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Это говорит о том, что источник неизвестен, но это на самом деле правильно. Конечно, этот метод реализован в AsyncTask.
Где ошибка?
Я попробовал свой код для добавления 'PolylineOptions' в ваш' mMap', я просто изменил 'src' и' dest' на hardcoded 'LatLng', и он отлично работает. Возможно, что-то другое вызывает эту ошибку. Вы пытались добавить журналы для значения, которое вы получаете для 'src' и' dest'? Помогло бы, если бы вы могли опубликовать дополнительные фрагменты и полные журналы. –
Я пытаюсь заставить 2 LatLong, но не работает. Как вы это заработали? Что вы имеете в виду с жестким кодом? Кстати, я извлекаю Json из Asynch Task, а затем передаю значения в Main Activity, где метод, который я опубликовал, используется. Я считаю, что это проблема с потоками, но я не знаю, что делать –
Я просто попытался изменить ваш '.add()' на .add (новый LatLng (-34, 151), новый LatLng (-34, 151.1)) ' затем выполнил код. Когда я проверил карту (координаты находятся вблизи Сиднея, Au), и я вижу линию. Вы пробовали входить в журналы, где вы получаете 'src' и' dest'? Посмотрите, вернули ли вы правильные значения? –