1.首先了解一下OSM
OpenStreetMap(简称OSM)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。详见百度百科、维基百科。
2. OSM的一些文章
- 参考http://blog.csdn.net/scy411082514/article/details/7471499此篇文章,介绍比较详细。
- www.OpenStreetMap.org 地图网址
- OSM在android端的应用http://wiki.openstreetmap.org/wiki/Android#OpenStreetMap.org
- osmdroid编译源码:http://blog.csdn.net/qq_30124547/article/details/53114743
- osmdroid基本的用法(博客写的时候版本有点老,现在最新5.5,但基本上没怎么变):http://blog.csdn.net/youngkingyj/article/details/44200057
- osmdroid最新源码:
- osmdroid最新demo:
3. osm源码简单介绍
1. openStreetMapViewer---------是osmdroid整体的一个demo,对于各种操作画点线多边形等等的操作
2. osmdroid-android-------------是osmdroid的源码,使用jar包,或者使用源码都可,后者扩展性更好
3. osmdroid-third-party----------osmdroid提供支持其他的地图,示例中提供了bing和google(需要翻墙)(将有专门的一篇文章介绍)
4. 其他的暂时没有研究。
4. 地图瓦片tile介绍
可以参考博客:http://blog.csdn.net/happyduoduo1/article/details/51781024
百科:http://www.baike.com/wiki/瓦片地图
4. 支持离线,也可以浏览缓存地图,自定义缓存大小
osmdroid地图默认是支持缓存地图的,即加载地图的逻辑就是先从sdcard对应目录加载地图,如果没有,则从网络获取。
org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants这个类包含一些静态常量,许多关于缓存的设置也在这个类里,咱捡几个来看。
缓存地图的位置在sdcard的根目录下的osmdroid文件夹,浏览下载的目录也是它
private static File OSMDROID_PATH = new File(Environment.getExternalStorageDirectory(),"osmdroid");
//缓存路径的set、get方法,可以自己设置缓存目录,也可以自行下载地图放入对应的文件夹。
public static File getBasePath(){
return OSMDROID_PATH;
}
public static void setOfflineMapsPath(String path){
OSMDROID_PATH = new File(path);
}
//从注释也可以看出来,定义了缓存的有效期和默认瓦片缓存的大小,都有对应的set方法
/** 30 days */
public static final long TILE_EXPIRY_TIME_MILLISECONDS = 1000L * 60 * 60 * 24 * 30;
/** default is 600 Mb */
public static long TILE_MAX_CACHE_SIZE_BYTES = 600L * 1024 * 1024;
/** default is 500 Mb */
public static long TILE_TRIM_CACHE_SIZE_BYTES = 500L * 1024 * 1024;
5. osmdroid-android
1. TileSystem:单独一个包,这个类的作用是处理墨卡投影的项目使用osmdroid瓦片。
这个类主要的关键词就是转换!坐标之间的转换。
2.osmdroid核心包了算是。
api包里面主要定义了一些接口,点、mapview、controller、projection等
event包里面定义了一些事件,比如滑动事件、地图监听事件、缩放事件等等
包明细如下:
tileprovider包是主要是瓦片提供、包括缓存也在这个包下,可以通过拓展图源的方式显示其他地图,继承OnlineTileSourceBase实现对应方法(将有一篇文章介绍到)
util主要一些‘工具类’,包括瓦片处理,bitmappool等
views是关于显示层的一些包括最常用的mapview和controller,何有overlay、polyline和polygon等(只列举了常用的)
剩下的两个LocationListenerProxy和SensorEventListenerProxy一个是定位相关的代理类,一个是传感器事件的代理类。