【问题标题】:Dynamically updating a marker in Google Maps Android动态更新 Google Maps Android 中的标记
【发布时间】:2014-06-30 00:15:37
【问题描述】:

很抱歉提出这样一个看似愚蠢的问题,但我如何在没有用户交互的情况下动态更新地图标记?我想到的是 Uber,你在地图上看到一个标记,代表一辆汽车,它根据从某处服务器接收的 gps 坐标在地图上移动。

我从未使用过动态实时数据,因此我不确定要使用的正确 Android 范例是什么。

我有一个正在生成 GPS 坐标的网络应用。我希望我的应用不断轮询我的网络服务器以获取更新的坐标,然后根据这些坐标移动我的 android 应用上的现有标记。

我该怎么做呢?异步任务?服务?一个while循环!?!

感谢大家的指点

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    AsyncTask 并不真正适合这种任务。来自documentation

    理想情况下,AsyncTasks 应该用于短操作(几秒钟 最多。)

    对于您描述的场景,有两种可能的解决方案更适合:长时间运行的线程或服务。如果您希望即使应用程序当前处于后台(但这里似乎并非如此)也继续进行此轮询,则服务将特别有用。

    我建议您在创建活动或片段时创建一个新线程,并运行轮询/睡眠循环。务必在 Activity 暂停时中断此线程(在onPause() 中),并在onResume() 中恢复它。此外,请务必仅从 UI 线程更新MapView——这是 Android 编程中的要求。您可以使用Handler 来执行此操作。

    请注意,持续轮询会对电池寿命造成重大影响。根据更新频率和其他标准,您可以考虑替代方案(例如使用 GCM)。我建议你看看"Transferring Data Without Draining the Battery" section of the training docs

    【讨论】:

      猜你喜欢
      • 2019-05-22
      • 2013-12-28
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      相关资源
      最近更新 更多