在Android上使用OpenStreetMap离线地图

之前用Osmdroid写的一些小应用加载OpenStreetMap时经常都加载不了,实在是让人抓狂,因而想弄一个离线地图,免得老是通过网络下载。在网上找了几篇资料,大家可参考一下:

(1)、http://www.haakseth.com/?p=30

(2)、http://stackoverflow.com/questions/7625620/how-to-create-map-tiles-from-openstreetmap-offline-display-it-on-android

(3)、http://topmanopensource.iteye.com/blog/1637317


我用的主要是第一篇文章里面的方法,下面来展示一下我的步骤(关于Osmdroid的使用,请自行google,下面以说明离线地图的制作为主),离线地图的制作主要用到的是一款叫Mobile Atlas Creator的软件,可以非常方便地根据需要制作自己的地图册,界面如下:




制作地图册

1、选择地图册格式为Osmdroid ZIP,首次使用软件时会提示你建立一个地图册,记得选择Osmdroid ZIP格式,名字暂时可以随便取,如果不是首次使用,就在软件左侧选择当前地图册-新建地图册,在弹出来的对话框,选择Osmdroid ZIP格式,并且起一个名字,确定之后点击添加选择区域;

2、选择所要制作离线地图的区域,可以通过长按鼠标左键并且拖拽选择,也可以在软件左侧-坐标信息填写经纬度范围去选择,选择好之后记得点击“选择该区域”按钮;


3、选择地图源,直接在软件左侧-选择地图源下拉菜单选择,网上是说最好选择OpenStreetMap Mapnik,但是选择这个发现地图加载不了,都是一个个大红叉,为了保险起见,我还是选择了OpenStreetMap MapQuest;

4、选择缩放比例,地图是按照缩放比例来分块的,缩放比例越大,分块就越小,越多。这个根据你的需求来决定;


5、选择图片转换,如果不选择的话,默认下载下来的地图册图片是jpg格式的,不知道OpenStreetMap支不支持,所以最好还是选上;

6、点击“开始下载地图册”开始下载。


7、下载完成后,把压缩文件重命名为Mapnik.zip,并且把压缩包里面第一层的文件夹名也改成Mapnik,这个因为要解压后再压缩,如果地图册比较大的话,需要花不少时间。完成之后把Mapnik.zip放到真机或者模拟器的/mnt/sdcard/osmdroid/路径下。网上也有说也可以把Mapnik.zip解压了,之后在每个png文件后面加上.tile后缀,放到/mnt/sdcard/osmdroid/tiles路径下(貌似通过网络加载地图就是会在本地保存这种文件),但是这种方法耗时更多。至此地图册算是准备完成了。



编写程序,如下:

package com.zhlingt.text_osmdroid2;

import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;

import android.os.Bundle;
import android.app.Activity;

public class OSMDroidActivity extends Activity {
	
	private MapView mMapView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_osmdroid);
        
        mMapView = new MapView(this, 256);	
        mMapView.setClickable(true);
        mMapView.setBuiltInZoomControls(true);
        setContentView(mMapView);
        mMapView.getController().setZoom(15);
        mMapView.getController().setCenter(new GeoPoint(23.158141,113.341748)); 
        mMapView.setUseDataConnection(false); //设置取消通过网络加载地图数据

	}	
 }
上面是一个简单程序,经验证是可以运行的。需要注意的是,如果离线地图册比较大的话,所用的机器或者模拟器的内存应该要大一点,我导入广州市的地图,大概300M,模拟器内存为512M时都会出现内存不够用的情况。

离线地图_openstreetmap_postgresql_瓦片 离线地图_openstreetmap_postgresql_postgis_mapnik_osm2pgsql_osm数据 写于20150414 关于软件地址 事先说明这其实就是我全部放到百度网盘空间里了。 所以万一一不小心我手抖删了,请mail我。 haibinzhagncn@qq.com 软件包括 leaflet osm里面中国和台湾的数据 openlayers geoserver mabox_studio mapnik 和生成瓦片工具需要的前置包等 postgresql osm2pgsql postgis python 一次只能上传一份那我就少点多几份吧: 介绍(免积分) http://download.youkuaiyun.com/detail/a137015127302/8594877 如果懒得自己慢慢找,我想你不介意花点积分的吧。 1.postgreSql_1.&postgis_install http://download.youkuaiyun.com/detail/a137015127302/8594903 2.postgreSql_2.mapnik&python_install http://download.youkuaiyun.com/detail/a137015127302/8594915 3.postgreSql_3.环境变量配置_osm数据导入 http://download.youkuaiyun.com/detail/a137015127302/8594919 4.postgreSql_4.生成图片瓦片byMapnik http://download.youkuaiyun.com/detail/a137015127302/8594921 其他:postgreSql_psql_乱码问题 http://download.youkuaiyun.com/detail/a137015127302/8594937 上传什么的好烦-- 我再试一次要是还是不能上传我就不玩了。切~ 核心内容(英文版公开资料):http://wiki.openstreetmap.org/wiki/Creating_your_own_tiles 以下本人写的中文版本的核心:只要注意这个基本上就没什么大问题了。 当然你要是懒得自己一步一步走,我想你应该也不介意多花点积分的。 摘录 首先版本请用 postgresql-9.3.6-2-windows.exe + postgis-bundle-pg93x32-setup-2.1.5-1.exe 因为至少如果是 postgresql-9.4.1-3-windows.exe + postgis-bundle-pg94x32-setup-2.1.7-1.exe 存在sample数据库无法创建问题。 同时32位下中文客户端提示信息异常问题,你只能改为英文显示,但是又会有warn信息提示你与本地不符(很烦不是么) 所以结论最新的未必就是最好的。 而且貌似他们已经开始放弃32位了。 还有这个2.1.7貌似是赶工出来的,因为提示信息写的是支援9.3而事实是否定的。 以上是我重装了n多遍的结论。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值