我正在開發一個MapView和GPS應用程序。 我的問題是用戶可能會在使用我的應用程序時斷開連接,所以他會走在完全灰色的地圖中。我想暫時緩存地圖,以便稍後查看。 我知道Google地圖API不允許緩存地圖,但我想確定是否TEMPORARILY緩存它(並在應用程序關閉時刪除它)也是禁止的。暫時緩存地圖的一部分(MapView)
我聽說過openstreetmaps/osmdroid,但我想確認在刪除我的一半代碼之前我必須使用它。
我正在開發一個MapView和GPS應用程序。 我的問題是用戶可能會在使用我的應用程序時斷開連接,所以他會走在完全灰色的地圖中。我想暫時緩存地圖,以便稍後查看。 我知道Google地圖API不允許緩存地圖,但我想確定是否TEMPORARILY緩存它(並在應用程序關閉時刪除它)也是禁止的。暫時緩存地圖的一部分(MapView)
我聽說過openstreetmaps/osmdroid,但我想確認在刪除我的一半代碼之前我必須使用它。
因爲我需要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)」要知道,地圖的一部分,我看着被下載。我會修改這條消息,如果我找到一個。
我知道Google地圖API不允許緩存地圖,但我想確定是否TEMPORARILY緩存它(並在應用程序關閉時刪除它)也是禁止的。
沒有辦法使用適用於Android的Google地圖附加組件完成此操作。
你有沒有完整的例子?
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){}
}
}
}
我設法解決這個部分使用2個MapView片段,其中一個是看不見的。 然後一個循環移動相機爲其他MapView創建緩存
這違反了Google的服務條款。 – 2013-02-05 15:09:40