Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android将多段线添加到地图错误_Android_Google Maps_Polyline - Fatal编程技术网

Android将多段线添加到地图错误

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

我的应用程序从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(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
的地方?看看你能不能找到正确的值?谢谢伙计,我欠你一杯咖啡。现在没问题了。谢谢,伙计,我欠你一杯咖啡。现在它可以正常工作了。