临时缓存Map的一部分(MapView)

时间:2011-04-20 08:40:33

标签: android caching maps android-mapview

我正在使用MapView和GPS开发应用程序。 我的问题是用户在使用我的应用程序时可能会断开连接,所以他将走在一个完全灰色的地图中。我想暂时缓存地图,以便稍后查看。 我知道谷歌地图API不允许缓存地图,但我想确保TEMPORARILY缓存它(并在关闭应用程序时将其删除)也是禁止的。

我听说过openstreetmaps / osmdroid,但我想在删除一半代码之前确认我必须使用它。

2 个答案:

答案 0 :(得分:2)

  

我知道谷歌地图API不允许缓存地图,但我想确保TEMPORARILY缓存它(并在关闭应用时将其删除)也是禁止的。

使用适用于Android的Google Maps Add-On无法实现此目的。

答案 1 :(得分:2)

因为我需要satelliteView,所以我最终使用了一种可以改进的方法。

我启动一个线程,要求控制器转到用户附近的位置。它已下载,缓存由MapView管理:

int latitudeSpan = mapView.getLatitudeSpan();
        int longitudeSpan = mapView.getLongitudeSpan();
        for(int i=-MEMORIZED_MAP_SIZE;i<=MEMORIZED_MAP_SIZE;i++)
        {
            for(int j=-MEMORIZED_MAP_SIZE;j<=MEMORIZED_MAP_SIZE;j++)
            {
                synchronized (this) 
                {
                    if(i==j&&j==0) j++;
                    Message msg = new Message();
                    msg.arg1=latitude+latitudeSpan*i;
                    msg.arg2=longitude+longitudeSpan*j;
                    msg.setTarget(MainActivity.handler);
                    msg.sendToTarget();
                    try
                    {
                    wait(5000);
                    }
                    catch(Exception e){}
                }
            }
        }

现在,我只需要找到另一种方法,而不是“等待(5000)”,以便知道我正在查看的地图部分已下载。如果找到,我会修改此消息。