2012-01-02 79 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