簡體   English   中英

相機停止移動一段時間后更新Google地圖

[英]Update Google Maps after a while when camera stopped moving

我仍然不相信我在SO上找不到任何問題,所以請隨意指出一個問題。

我正在使用Google地圖實現一個顯示多個標記的應用程序。 我想讓它變得動態,以便只繪制標記。 為此,我希望能夠知道地圖何時完全停止,然后等待幾秒鍾,這樣我就不會亂用地圖,而用戶可能仍在移動地圖,然后清除標記並繪制新標記。 如果用戶在計時器觸發之前移動,則必須取消,然后再次開始計數。

到目前為止,我設法在使用onCameraChangeListener停止動畫時將相機更改為觸發,盡管它的定義指定在動畫中期仍然可以調用它。 這是正確的方法嗎?

第二個問題是關於計時器。 我目前的實施如下:

map.setOnCameraChangeListener(new OnCameraChangeListener() {
    public void onCameraChange(CameraPosition position) {
        refresher.schedule(new refreshMapData(), 2000);
    }
});

實際更新必要標記的Timer是這樣的:

class refreshMapData extends TimerTask{

    public void run() {
        map.clear();
        for ( ... ) {
            map.addMarker( ... );
        }
    }
}

這顯然引發了“不在主線程上”的異常並引導我進入下一個問題:這個問題的解決方法是什么? 如果我不允許從主線程外部執行此操作,如何使用計時器修改Google Map的值?

編輯:關於第一個問題,我猜我只需要比較一下自上次以來該位置是否發生了變化以便這樣做。 只需要定時更新問題的答案。

你最好使用Handler 這不會創建額外的線程,這是不必要的。

只需在onCameraChange中調用它:

handler.removeMessages(MSG_ID);
handler.sendEmptyMessageDelayed(MSG_ID, 2000);

並在handleMessage中完成你的工作。

如果只顯示幾個標記,為什么還需要動態? 可見區域外的標記不會慢得多。 清除和添加標記的代碼可能會使其變慢。

如果您要顯示數千個標記,請嘗試Android Maps Extensions ,它只添加了內置的可見標記。

我不知道你是否需要一個好的解決方案,但我發現這個問題並認為可以提供幫助。 它幫助了我, 這個人寫了一篇博客文章,解釋了如何使用集群管理器以及如何設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM