OSMdroid的使用基础

简介:

osmdroid 提供了与OpenStreetMap-Data交互的工具和视图。它是androidMapView类的替代。该文档将解释如何开始在你的应用中使用osmdroid

官网:

http://code.google.com/p/osmdroid/

功能:

基本功能有:查看地图、缩放地图、单点移动、多点触控等

环境:

1、搭建好JDK环境,安装eclipseADT插件。

2、新建android工程

3、在工程包内建lib文件夹,将osmdroid-android-3.0.5.jarhttpmine-4.0.1.jarappche-mine4j-0.6345035.jarslf4j-android-1.5.8.jar放入lib文件夹。

4、在工程名上右键单击,选择Build Path->Config Build Path,单击Java Build Path->Libraries,点击Add JARs3中的四个jar包加入到工程中。

(如果是下载的osmdroid源码,则3、4两步改为:将源码包放入工程src包下,刷新。建议使用源码,这样便于以后更改代码。)

5、在XML文件中可以使用org.osmdroid.views.MapView增加MapView组件。其中tilesource="MapquestOSM"为地图设置切片源为OSM(OpenStreetMap)

6、通过findViewById()来获得MapView的引用。然后初始化,为其设置切片源、中心点、图层放大级别。

权限:

你需要在Manifest文件中增加下列权限许可:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


 

源文件:


import org.osmdroid.tileprovider.tilesource.TileSourceFactory;

import org.osmdroid.util.GeoPoint;

import org.osmdroid.views.MapController;

import org.osmdroid.views.MapView;

import android.app.Activity;

import android.os.Bundle;


public class GeoMapActivity extends Activity {


private MapController mapController;

private MapView mapView;


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mapView = (MapView) findViewById(R.id.map);

mapView.setTileSource(TileSourceFactory.MAPNIK);

mapView.setBuiltInZoomControls(true);

mapController = mapView.getController();

mapController.setZoom(15);

GeoPoint point2 = new GeoPoint(51496994, -134733);

mapController.setCenter(point2);

}

}


 

布局文件main.xml

 

<?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/map"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:clickable="true"

android:enabled="true"

tilesource="MapquestOSM" />


</RelativeLayout>


 

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、付费专栏及课程。

余额充值