我是谷歌地图版本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) {
}
答案 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();