如何从谷歌地图android上的处理程序更新标记?

时间:2016-05-30 13:45:18

标签: android google-maps handler marker

我正在尝试使用以下代码更新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打电话时它无法工作。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用handler更新用户界面。创建一个单独的方法,在地图上获取并显示标记。处理程序允许您发送和处理与线程的MessageQueue关联的Message和Runnable对象。

Handler有两个主要用途:

  • 安排消息和runnables作为将来的某个点执行。
  • 将要在不同于自己的线程上执行的操作排入队列。

    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);
}
};