关于OpenStreetMap的介绍,国内还是很少,csdn上面有一篇,写的不错,我也就不再做重复的事情了。

这里贴出链接地址:http://blog.csdn.net/mad1989/article/details/9733985

下面,开始介绍一下osmbonuspack导航。

注意,如果要做商业应用,请先仔细阅读许可文档,以免发生不必要的麻烦。

#0,首先,先去mapquest上面注册一个开发者账号!

强烈推荐大家先做这一步,从注册到申请到的App Key可以使用,要等待1小时左右。所以,先注册了吧。

注册的网址:http://developer.mapquest.com/

注册好之后,你会得到一个类似于“Fmjtd%7Cluubn10zn9%2C8s%3Do5-90rnq6”这样的App key。也就是API KEY。

#1,显示地图。

这个,按照http://blog.csdn.net/mad1989/article/details/9733985来做就可以了。其中,我们只需要做完“1.3地图实例化”即可。

这个步奏不难,只是下载的东西比较多,大家慢慢来就可以了。

#2,下载osmbonuspack。

这里的下载方式和我们所常见的不太一样,你需要通过svn来下载。

下面是svn的代码:

svn checkout http://osmbonuspack.googlecode.com/svn/trunk/ osmbonuspack-read-only

下载好后,文件夹下会有如下的三个项目。

#3,导入到eclipse中。

如何导入不讲了,但是请注意,这里只导入OSMBounsPack项目,其他项目不是必须要导入的。

还有,请注意勾选这个选项,因为这个项目是一个Android Library,不在同一级目录下,引用时会出错。

#4,将osmbonuspack引用到你的项目中。

这里的引用很简单,在你的项目上点击右键,选择Properties,在左边的栏里面选择Android,然后在右边的Library下,添加OSMBonusPack。

#5,写代码,实现导航。

这里就很简单了。由于是简单的例子,这里给大家看一下如何调用就可以了。

首先,onCreate方法的代码:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activity = this;
mMapView = (MapView) findViewById(R.id.mapview);
mController = mMapView.getController();
// ResourceProxy init
// mResourceProxy = new DefaultResourceProxyImpl(this);
mMapView.setTileSource(TileSourceFactory.MAPNIK);
mMapView.setBuiltInZoomControls(true);
mMapView.setMultiTouchControls(true);
// 定位当前位置,珠海
GeoPoint center = new GeoPoint(22.288874, 113.576873);
mController.setZoom(14); // 先设置缩放,后设置中心点,不然会出现偏差。
mController.setCenter(center);
mMapView.setMinZoomLevel(14);
mMapView.setMaxZoomLevel(17);
// 添加标记
setBickAndParkLocation();
mMapView.setKeepScreenOn(true);
// 右下角小地图Overlay
// MinimapOverlay MinimapOverlayoverlay = new MinimapOverlay(this,
// mMapView.getTileRequestCompleteHandler());
// mMapView.getOverlays().add(MinimapOverlayoverlay);
// mMapView.getOverlays().remove(0); // 地图范围控制
// http://stackoverflow.com/questions/5403733/restricting-the-area-the-user-can-go-to-on-mapview
BoundingBoxE6 areaLimit = new BoundingBoxE6(22.499, 113.698, 22.123,
113.363);
mMapView.setScrollableAreaLimit(areaLimit);
mZoomLevel = mMapView.getZoomLevel(); new Thread(new Runnable() {
@Override
public void run() {
RoadManager roadManager = new MapQuestRoadManager(
"这里是#0申请的那个App Key");
roadManager.addRequestOption("routeType=bicycle");
Marker startMarker = new Marker(mMapView);
GeoPoint startPoint = new GeoPoint(22.274, 113.574);
startMarker.setPosition(startPoint);
startMarker.setAnchor(Marker.ANCHOR_CENTER, 1.0f);
// startMarker.setIcon(getResources().getDrawable(R.drawable.ic_launcher));
mMapView.getOverlays().add(startMarker);
// mMapView.invalidate();
startMarker.setTitle("Start point"); // mMapView.invalidate();
ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
waypoints.add(startPoint);
waypoints.add(new GeoPoint(22.284, 113.553)); // end point
Road road = roadManager.getRoad(waypoints);
Polyline roadOverlay = RoadManager.buildRoadOverlay(road,
activity);
mMapView.getOverlays().add(roadOverlay);
// mMapView.invalidate(); Drawable nodeIcon = getResources().getDrawable(
R.drawable.marker_node);
for (int i = 0; i < road.mNodes.size(); i++) {
RoadNode node = road.mNodes.get(i);
Marker nodeMarker = new Marker(mMapView);
nodeMarker.setPosition(node.mLocation);
nodeMarker.setIcon(nodeIcon);
nodeMarker.setTitle("Step " + i);
mMapView.getOverlays().add(nodeMarker);
} mhandler.obtainMessage(1).sendToTarget();
}
}).start();

之后,在类中添加Handler:

        Handler mhandler = new Handler() {
public void handleMessage(Message msg) {
mMapView.invalidate();
}
};

这里开线程的原因,是因为网络操作,不能在主线程中进行。

之后,就可以编译运行啦。

#6,Unable to execute dex: Multiple dex files define Lorg/slf4j/ILoggerFactory

问题:

导入用来导航的OSMBonusPack第三方包时,编译程序出现如下错误:

Multiple dex files define Lorg/slf4j/ILoggerFactory

原因:

这个是由于在源程序中,需要引用slf4j的jar包,而OSMBonusPack也引用了这个jar包,但是两个jar包的版本不同导致的。

解决方法:

将OSMBonusPack中slf4j的jar包删除,并导入现在项目中使用的jar包,重新引用,编译一次即可。

Android OpenStreetMap(OSM) 使用 osmbonuspack 进行导航的更多相关文章

  1. Android:有关下拉菜单导航的学习(供自己参考)

    Android:有关==下拉菜单导航==的学习 因为先前的学习都没想着记录自己的学习历程,所以该博客才那么迟才开始写. 内容: ==下拉菜单导航== 学习网站:android Spinner控件详解 ...

  2. android 自定义组合控件 顶部导航栏

    在软件开发过程中,经常见到,就是APP 的标题栏样式几乎都是一样的,只是文字不同而已,两边图标不同.为了减少重复代码,提高效率, 方便大家使用,我们把标题栏通过组合的方式定义成一个控件. 例下图: 点 ...

  3. Android 4.4 上实现透明导航栏和状态栏 Translucent system bar

    Translucent system UI styling To get the most impact out of your content, you can now use new window ...

  4. Android入门之ActionBar实现Tab导航

    效果图: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=&qu ...

  5. OpenStreetMap(OSM) for developers

    This article from: http://wiki.openstreetmap.org/wiki/Develop OpenStreetMap isn't just open data - i ...

  6. OpenStreetMap(OSM) JMap Viewer(Java swing map)

    This article from:http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer is a java component which ...

  7. OpenLayers 添加OpenStreetMap(OSM)瓦片层示例

    This article from:http://wiki.openstreetmap.org/wiki/OpenLayers_Simple_Example Deploy an OpenStreetM ...

  8. Android学习笔记- Fragment实例 底部导航栏的实现

    1.要实现的效果图以及工程目录结构: 先看看效果图吧: 接着看看我们的工程的目录结构: 2.实现流程: Step 1:写下底部选项的一些资源文件 我们从图上可以看到,我们底部的每一项点击的时候都有不同 ...

  9. 兼容 Android 4.4 透明状态栏与导航栏

    http://www.apkbus.com/Android-163388-1-1.html?_dsign=73d41229 android 系统自4.2 开始 UI 上就没多大改变,4.4 也只是增加 ...

随机推荐

  1. HDU 2586 How far away ?【LCA】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2586 How far away ? Time Limit: 2000/1000 MS (Java/Oth ...

  2. 使用maven创建项目

    http://192.168.4.112/rdmanager/main/index.jhtml 1.对于第一次下载某个项目的源码,按照下面的步骤进行: (1)在D:\projects\目录下的空白位置 ...

  3. 【luogu P1144 最短路计数】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1144 #include <iostream> #include <cstdio> # ...

  4. 【luogu P1962 斐波那契数列】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1962 给你篇dalao的blog自己看吧,把矩阵快速幂的板子一改就OK #include <algor ...

  5. HTML基础之标签简单认识

    简介 HTML(Hyper Text Markup Language)译为"超文本标记语言",主要是通过HTML标记对网页中的文本.图片.声音等内容进行描述 HTML之所以称为超文 ...

  6. deprecate (声明不赞成)

    deprecate (声明不赞成)  只是不赞成,不影响使用,或者你升级包 解决:update to 高版本 npm update [-g] [<pkg>...]

  7. tomcat6添加服务

    Mysql在导入大量数据的时候就要把tomcat添加成服务 添加服务 在DOS界面下,进入Tomcat解压目录的bin目录 service.bat install

  8. 详解Linux运维工程师

    运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...

  9. 配置Github秘钥

    Git安装完成后,需要手动配置ssh密钥 配置github的ssh密钥: (1)打开Git Bash查看电脑上是否已经存在SSH密钥: 输入 cd ~/.ssh 若如上图显示无法找到该文件则要创建新的 ...

  10. sax技术解析xml下jaxp解析器详细代码

    *解析xml的两种技术dom和sax dom:根据xml的层级结构在内存中分配一个树形结构,把xml标签,属性,文本封装成对象. sax方式:事件驱动,边读边解析. 在javax.xml.parser ...