我正在使用MapView和GPS开发应用程序。 我的问题是用户在使用我的应用程序时可能会断开连接,所以他将走在一个完全灰色的地图中。我想暂时缓存地图,以便稍后查看。 我知道谷歌地图API不允许缓存地图,但我想确保TEMPORARILY缓存它(并在关闭应用程序时将其删除)也是禁止的。
我听说过openstreetmaps / osmdroid,但我想在删除一半代码之前确认我必须使用它。
答案 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)”,以便知道我正在查看的地图部分已下载。如果找到,我会修改此消息。