-2

我是谷歌地图版本 2 的新手。我曾经在给定的 LatLng 中画一条线。我可以画出那些线。有没有办法为特定的时间线画线。例如,我有 latLng 列表,我想每 3 秒绘制一条折线。为此,我使用了 Thread.sleep(2000)。但是当我这样做时,我的设备被击中了,在完成所有迭代后,我可以看到给定 latLng 中的线条图。有没有其他方法可以在特定的时间线上画线。提前致谢

    PolylineOptions polylineOptionsPlay =   new PolylineOptions();
          for (int i = 0; i < listPoint.size(); i++) {
                try {
                    System.out.println(i);
                    LatLng drawpoly = listPoint.get(i);
                    Log.v(TAG, "Hello :: "+drawpoly);
                    polylineOptionsPlay.add(drawpoly);
                    //googleMap.addPolyline(new PolylineOptions().add(locLatLng));
                    polyline = googleMap.addPolyline(polylineOptionsPlay);
                    polyline.setColor(Color.BLUE);
                    polyline.setWidth(2);

                    Thread.sleep(2000);

                } //System.out.println(stem[0]);
                catch (InterruptedException ex) {

                }
4

1 回答 1

0

如果您实现 Thread 或 HandlerThread,请确保您的 UI 线程在等待工作线程完成时不会阻塞——<code>不要调用 Thread.wait() 或 Thread.sleep()。

http://developer.android.com/training/articles/perf-anr.html

你不应该调用 Thread.sleep() 这会阻塞 ui 线程。相反,您可以使用Handler.

考虑listPoint有纬度和经度列表,您可以执行以下操作

将以下声明为类变量。

Handler m_handler;
Runnable m_handlerTask ;
int t=0;

使用Handler延迟 3 秒的 to 使用 lat 和 long 绘制折线

m_handler = new Handler();
m_handlerTask = new Runnable()
{
@Override 
public void run() { 
if(t<listPoint.size()-1)
{     
LatLng src = listPoint.get(t);
LatLng dest = listPoint.get(t + 1);
Polyline line = mMap.addPolyline(new PolylineOptions()
    .add(new LatLng(src.latitude, src.longitude),
    new LatLng(dest.latitude,dest.longitude))                                       
    .width(2).color(Color.BLUE).geodesic(true)); 
    t++;
    }
    else
    {
   m_handler.removeCallbacks(m_handlerTask);
    } 
   m_handler.postDelayed(m_handlerTask, 3000);    
    }
};
m_handlerTask.run(); 
于 2013-06-24T05:54:19.783 回答