2012-01-02 68 views
2

嗨我的應用程序有時用於沒有3G網絡的農村地區,所以第一次加載mapview真的很慢。Android使MapView加載更快

我希望能夠在後臺(服務或主要活動(家庭活動))預加載一些圖塊,以加快此下載速度。

我看到有一個方法mapView.preLoad(),但它只適用於一個mapView對象。我怎麼能從服務中做同樣的事情?我以爲這樣做:

MapView mv=new MapView(this, getResources().getString(R.string.MAP_API_KEY)); 

mv.preLoad(); 

問題是如果上下文不是MapActivity這會引發異常。

這裏將是應用程序的流程:

用戶啓動應用程序

主要活動獲取位置數據和統計數據下載的

用戶打開地圖活動

地圖活動地圖更快,因爲它的下載數據已經在緩存中

任何想法我可以做什麼?在提前諮詢

+0

使用其他地圖供應商之後調用map.onResume();;) – Warpzit 2012-01-02 16:39:23

+0

哪一個?我嘗試了一些與FreeMap類似的東西,但看起來比較慢......您能否提供關於您的建議的更多細節? – vallllll 2012-01-02 17:13:45

+0

我不使用任何人,所以不會給出好建議,但搜索堆棧溢出有一些關於它的帖子:) – Warpzit 2012-01-03 06:04:49

回答

4

我在一個片段內使用android Mapview,但當我加載地圖的座標時,它根本沒有加載。所以我找到了一個解決方案。

firt在onCreate方法中初始化映射。

View v = inflater.inflate(R.layout.fragment_layout, null); 
map = (MapView) v.findViewById(R.id.map); 
map.onCreate(this.savedInstance); 

然後像這樣設置地圖視圖。

private void setUpMap() { 
    try { 
     MapsInitializer.initialize(mContext); 
    } catch (GooglePlayServicesNotAvailableException e) { 
     e.printStackTrace(); 
    } 

    mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("Place Lable").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_drawable))); 


    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 15)); 


    map.onResume(); 
} 

在此代碼這個關鍵點是設置Map