我正在尝试使用以下代码更新marker
:
// create marker
MarkerOptions marker1 = new MarkerOptions().position(new LatLng(latitude, longitude)).rotation(head);
// Changing marker icon
marker1.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher));
// adding marker
googleMap.addMarker(marker1);
CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(latitude, longitude)).zoom(17)
.build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
当我在主线程上使用它时工作正常但是当我从Handler
打电话时它无法工作。
答案 0 :(得分:0)
是的,您可以使用handler
更新用户界面。创建一个单独的方法,在地图上获取并显示标记。处理程序允许您发送和处理与线程的MessageQueue关联的Message
和Runnable对象。
Handler有两个主要用途:
将要在不同于自己的线程上执行的操作排入队列。
Handler UI_HANDLER = new Handler();
UI_HANDLER.postDelayed(UI_UPDTAE_RUNNABLE, 30000);
以下是Runnable方法,将任何位置放在您的活动中。
Runnable UI_UPDTAE_RUNNABLE = new Runnable() {
@Override
public void run() {
drawAllMarker();//Method that will get employee location and draw it on map
UI_HANDLER.postDelayed(UI_UPDTAE_RUNNABLE, 30000);
}
};