Android将多段线添加到地图错误
我的应用程序从URL中检索一个Android将多段线添加到地图错误,android,google-maps,polyline,Android,Google Maps,Polyline,我的应用程序从URL中检索一个JSON,并解析从用户位置到所选标记位置的方向。 调试向我展示了目标和源是正确的,当我在地图中添加多段线时,应用程序会被卡住。代码如下: 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(sr
JSON
,并解析从用户位置到所选标记位置的方向。
调试向我展示了目标和源是正确的,当我在地图中添加多段线时,应用程序会被卡住。代码如下:
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);
}
它说来源不明,但实际上是正确的。
当然,此方法是在异步任务中实现的。
错误在哪里?发生异常是因为您试图修改的UI不是从主线程,而是从asynctask的doInBackground(这是您的请求所必需的)。 尝试将您的代码封装成如下内容
runOnUiThread(new Runnable() {
@Override
public void run()
{
//do your loop adding polyline
}
});
或者获取从doInBackground返回的数据,并对其进行处理以在OnPostExecute中添加多段线。发生异常的原因是,您试图修改的UI不是来自主线程,而是来自asynctask的doInBackground(这是您的请求所必需的)。 尝试将您的代码封装成如下内容
runOnUiThread(new Runnable() {
@Override
public void run()
{
//do your loop adding polyline
}
});
或者从doInBackground返回数据,并对其进行处理以在OnPostExecute中添加多段线。我尝试了将
多段线选项添加到您的mMap
中的代码,我只是将src
和dest
更改为硬编码LatLng
s,效果很好。可能是其他原因导致了此错误。您是否尝试为src
和dest
的值添加日志?如果你能发布更多的代码片段和完整的日志会有所帮助。我试图强制使用2个LatLong,但不起作用。你是怎么做到的?硬编码是什么意思?顺便说一句,我从异步任务中检索Json,然后将值传递给使用我发布的方法的主活动。我相信这是线程的问题,但我不知道该怎么做。我只是尝试将.add()
修改为。add(new LatLng(-34151),new LatLng(-34151.1))
然后运行代码。当我查看地图时(坐标在澳大利亚悉尼附近),我看到了这条线。您是否尝试过将日志放在获取src
和dest
的地方?查看您检索的值是否正确?我尝试了将PolylineOptions
添加到mMap
中的代码,我只是将src
和dest
更改为硬编码LatLng
s,效果很好。可能是其他原因导致了此错误。您是否尝试为src
和dest
的值添加日志?如果你能发布更多的代码片段和完整的日志会有所帮助。我试图强制使用2个LatLong,但不起作用。你是怎么做到的?硬编码是什么意思?顺便说一句,我从异步任务中检索Json,然后将值传递给使用我发布的方法的主活动。我相信这是线程的问题,但我不知道该怎么做。我只是尝试将.add()
修改为。add(new LatLng(-34151),new LatLng(-34151.1))
然后运行代码。当我查看地图时(坐标在澳大利亚悉尼附近),我看到了这条线。您是否尝试过将日志放在获取src
和dest
的地方?看看你能不能找到正确的值?谢谢伙计,我欠你一杯咖啡。现在没问题了。谢谢,伙计,我欠你一杯咖啡。现在它可以正常工作了。