如何在谷歌地图中绘制聚线 - android

时间:2013-06-24 05:15:53

标签: android android-mapview google-maps-android-api-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) {

                }

1 个答案:

答案 0 :(得分:0)

如果您实现了Thread或HandlerThread,请确保您的UI线程在等待工作线程完成时不会阻塞 - do not call Thread.wait() or 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秒,使用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();