一、osmdroid环境配置与测试

osmdroid环境配置与测试

osmdroid可用于是一款完全免费的用于替换Android MapView类的开源包。它包含了一个模块化的瓦片提供系统,用于支持多种类型的在线和离线瓦片资源,并且内置的覆盖物支持绘图图标、跟踪位置及绘制图形。

当前发布版本:5.6.5 2017/02/04

环境配置

  • Gradle dependency

    在你的项目build.gradle(Module:app)中添加如下配置:

    repositories {
        mavenCentral()
    }
    
    dependencies {
         compile 'org.osmdroid:osmdroid-android:5.6.4'
    }
    
  • Maven dependency

    在你的配置文件中加入:

    <dependency>
      <groupId>org.osmdroid</groupId>
      <artifactId>osmdroid-android</artifactId>
      <version>5.6.4</version>
      <type>aar</type>
    </dependency>
    

环境测试

在布局文件中添加MapView:

<?xml version="1.0" encoding="UTF-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent" >  

        <org.osmdroid.views.MapView  
            android:id="@+id/myOSMmapview"  
            android:layout_width="match_parent"  
            android:layout_height="match_parent"  
            tilesource="MapquestOSM"  
            android:clickable="true"  
            android:enabled="true" >  
        </org.osmdroid.views.MapView>  

</RelativeLayout>  

在相应Activity的 onCreate() 方法中添加如下代码:

    mMapView = (MapView) findViewById(R.id.myOSMmapview);  
    mController = mMapView.getController();  
    //ResourceProxy init  
    mResourceProxy = new DefaultResourceProxyImpl(this);  
    mMapView.setTileSource(TileSourceFactory.MAPNIK);  
    mMapView.setBuiltInZoomControls(true);  
    mMapView.setMultiTouchControls(true);  
    //定位当前位置,北京市西长安街复兴路  
    GeoPoint center = new GeoPoint(39.901873, 116.326655);  
    mController.setCenter(center);  
    mController.setZoom(14);

效果图如下:

osmdroid效果图

上文引用至osmdroid官网,测试代码参考至csdn。关于如何使用osmdroid请前往官网或者看作者后续相关内容。

OSMDroid 是一个开源的 Android 地图库,它允许开发者在 Android 应用程序中嵌入 OpenStreetMap 数据和地图功能。与原生 Google Maps API 不同,OSMDroid 是基于轻量级的 OSM 数据,这意味着它可以提供更好的离线地图支持,并且对隐私更加友好。 防止内存泄露(Memory Leaks)是 Android 开发中非常重要的一环,特别是在处理地图相关组件时,因为地图数据加载和绘制可能会占用大量内存。以下是一些避免 OSMDroid 防止内存泄露的方法: 1. **及时释放资源**:确保每次不再使用地图视图(MapView)、图层(Overlay)或数据源(TileProvider)时,调用相应的 `dispose()` 或 `removeAllOverlays()` 方法释放它们。 2. **使用弱引用**:对于持有地图对象的引用,可以考虑使用 WeakReference,这样即使其他强引用消失,弱引用也不会阻止垃圾回收。 3. **监听生命周期**:地图视图的 `OnDestroy()` 或 `onSaveInstanceState()` 方法中,记得清除地图相关的回调和监听器,以防止内存泄漏。 4. **批处理操作**:尽量减少在主线程执行耗时的操作,如绘制大图层或加载大量数据,可以使用异步任务或者 `AsyncTask` 来处理。 5. **使用 LruCache**:对于频繁访问但占用空间较大的地图数据,可以使用 LruCache 来缓存,当内存不足时自动清理最久未使用的数据。 6. **跟踪内存使用**:利用 Android 的内存分析工具(如 Android Studio 的 Memory Profiler 或第三方库如 LeakCanary)定期检查应用内存状况,找出可能的泄漏点。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值