`
longgangbai
  • 浏览: 7332210 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GIS的学习(三十三)osmdroid OSMBonusPack实现Route,Bubble

阅读更多

  使用开源项目OSMBonusPack实现线路和气泡的功能:

项目结构如下:

 

具体代码如下:

package com.osmbonus.simple;

import java.util.ArrayList;

import org.osmdroid.bonuspack.overlays.ExtendedOverlayItem;
import org.osmdroid.bonuspack.overlays.ItemizedOverlayWithBubble;
import org.osmdroid.bonuspack.routing.OSRMRoadManager;
import org.osmdroid.bonuspack.routing.Road;
import org.osmdroid.bonuspack.routing.RoadManager;
import org.osmdroid.bonuspack.routing.RoadNode;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.OverlayItem;
import org.osmdroid.views.overlay.PathOverlay;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
/**
 * 备注:需要的注意事项:
 *   1.针对OSMBonusPack v2.x jars 是基于 osmdroid v3.0.8.  所以版本必须对应否则可能出现莫名其妙的问题。
 *   2.以下是集成必须的资源信息
 *      •For a white bubble: 
 *			◦drawable-mpi/bonuspack_bubble.9.png 
 *			◦layout/bonuspack_bubble.xml 
 *			•For a dark-grey bubble: 
 *			◦drawable-mpi/bonuspack_bubble_black.9.png 
 *			◦layout/bonuspack_bubble_black.xml 
 *		•For the "more info" button: 
 *			◦drawable/btn_moreinfo.xml 
 *			◦drawable-mpi/moreinfo_arrow.png 
 *			◦drawable-mpi/moreinfo_arrow_pressed.png 
 *   3.地图使用的权限总结:
 *          <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" />
 *
 *针对OSMBonusPack中几个重要的特性:
 *   1.根据地点名称查询POI
 *   2.查询附近的POI
 *   3.根据起始点规划线路
 *   4.marker气泡重写和定制
 *   5.地图poi点的响应处理
 *   
 *   
 *   
 *   @author longgangbai
 *   
 *  以下代码均来自官方Tutorial_1 整理 
 *  
 */
public class OSMBonusPackSimpleActivity extends Activity {
	private MapView map;
    /** Called when the activity is first created. */
    @Override 
    public void onCreate(Bundle savedInstanceState) {         
    	super.onCreate(savedInstanceState);        
    	setContentView(R.layout.main);       
    	//获取地图对象
    	map = (MapView) findViewById(R.id.map);   
    	//设置地图图源
    	map.setTileSource(TileSourceFactory.MAPNIK);  
    	//设置起始点和中心
    	GeoPoint startPoint = new GeoPoint(48.13, -1.63);         
    	MapController mapController = map.getController();         
    	mapController.setCenter(startPoint);        
    	mapController.setZoom(9);  
    	//创建RoadManager管理器
    	RoadManager roadManager = new OSRMRoadManager();
    	
    	//如果想需要自行车线路采用如下方式
    	//RoadManager roadManager = new MapQuestRoadManager();
    	//roadManager.addRequestOption("routeType=bicycle");
    	
    	//设置线路的起始点位置
        ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();        
        waypoints.add(startPoint);         
        waypoints.add(new GeoPoint(48.4, -1.9)); //end point   
        //获取相关的线路对象
        Road road = roadManager.getRoad(waypoints);
        //创建线路图层
        PathOverlay roadOverlay = RoadManager.buildRoadOverlay(road, map.getContext());
       //添加线路图层
        map.getOverlays().add(roadOverlay);
        
        
        //设置线路的上的标志
        final ArrayList<ExtendedOverlayItem> roadItems =    new ArrayList<ExtendedOverlayItem>(); 
        Drawable marker = getResources().getDrawable(R.drawable.marker_node);         
        for (int i=0; i<road.mNodes.size(); i++){                 
        	RoadNode node = road.mNodes.get(i);                 
	        ExtendedOverlayItem nodeMarker = new ExtendedOverlayItem("Step "+i, "", node.mLocation, this);                 
	        nodeMarker.setMarkerHotspot(OverlayItem.HotspotPlace.CENTER);                 
	        nodeMarker.setMarker(marker);                 
	        roadItems.add(nodeMarker);         
        }
        //创建气泡
        ItemizedOverlayWithBubble<ExtendedOverlayItem> roadNodes =    new ItemizedOverlayWithBubble<ExtendedOverlayItem>(this, roadItems, map);
        //添加线路上气泡信息
        map.getOverlays().add(roadNodes);
        
        //刷新地图
        map.invalidate();
    } 
}

 

分享到:
评论
3 楼 Ash_Like_Snow 2014-05-14  
RoadManager roadManager = new OSRMRoadManager();
LZ你好,你用这个生产路径的时候,没有遇到生成的路径只是直线的情况吗?没有路径上的node
log显示错误:OSRMRoadManager::getRoad: request failed
官网demo貌似也有这个错误
2 楼 longgangbai 2014-01-02  
zhuangshuo 写道
楼主有没有尝试用源码,而不用jar包

最先采用的是源代码方式没有跟踪问题,后来通过重写代码和jar形式实现.
1 楼 zhuangshuo 2013-12-27  
楼主有没有尝试用源码,而不用jar包

相关推荐

    css实现Bubble提示框效果.rar

    在网页设计中,提示框(Bubble提示框)是一种常见的用户...这个"css实现Bubble提示框效果.rar"文件中的"jiaoben615"可能是源代码示例,你可以下载并参考其中的实现方式,进一步学习和理解CSS在创建提示框方面的应用。

    css border实现Bubble提示框的方法

    本篇文章将详细探讨如何利用`CSS`的`border`属性来实现一个Bubble提示框,特别是通过创建两个三角形来形成箭头。 首先,理解`CSS`中的`border`属性至关重要。`border`属性允许我们定义元素的边框,包括边框宽度、...

    纯JS bubble 实现——漂亮

    【标题】"纯JS bubble 实现——漂亮"所涉及的知识点主要集中在JavaScript(JS)和前端交互设计上,特别是创建动态的冒泡提示(Bubble Tooltip)功能。这个功能允许在网页上创建一种视觉效果,当鼠标悬停在某个元素上...

    CSS实现Bubble气泡按钮

    本文将深入探讨如何使用CSS来实现Bubble气泡按钮,同时也会提供一个简单的示例代码。 首先,我们需要理解CSS(Cascading Style Sheets)的作用,它是用来描述HTML或XML(包括如SVG、MathML等各种XML方言)文档样式...

    Android之泡泡效果bubble

    Android系统从Android 8.0(API级别26)开始引入了Bubble API,使得开发者能够实现这样的功能。在Android Studio的最新版本2022.3.1中,我们可以利用这些API来更新旧的代码,以适应现代Android系统的特性。 首先,...

    Smobiler实现bubblechart源码

    本篇文章将深入探讨如何在 Smobiler 中实现 Bubble Chart,也就是气泡图,这是一种能够同时展示三个维度数据的有效图表类型。 气泡图由一系列大小不一的圆点组成,每个圆点代表一个数据项,圆点的位置代表两个维度...

    bubble_gin+gorm学习项目_未分层.rar

    《 Gin 框架与 Gorm ORM ...总之,通过深入学习和实践“bubble_gin+gorm学习项目_未分层”,开发者不仅能掌握 Gin 框架和 Gorm ORM 的基础用法,还能了解到如何将它们有效地整合到实际项目中,提升开发效率和代码质量。

    Android代码-bubble-navigation

    通过深入研究这个"bubble-navigation-master"项目,开发者不仅可以学习如何在Android应用中实现Bubble Navigation,还可以了解如何优化用户界面和提升用户体验。这个项目对初学者和有经验的开发者来说都是一个很好的...

    Android 泡泡效果 bubble

    综上所述,通过学习和实践这个"Android 泡泡效果 bubble"项目,开发者可以深入理解Android动画系统、自定义视图绘制、粒子系统、事件监听以及数据管理等多个核心概念,对于提升Android应用的用户体验和视觉效果有着...

    Bubble Shooter Easter Bunny 2.0.unitypackage 泡泡龙源码

    泡泡龙游戏是一款深受全球玩家喜爱的经典消除类游戏,其源码分析对于学习游戏开发尤其是Unity引擎的开发者来说,具有很高的学习价值。本篇将针对“Bubble Shooter Easter Bunny 2.0.unitypackage”这一Unity项目进行...

    彩球射手.rar_Bubble Shooter.e_C# 游戏_bubble shooter.exe

    《彩球射手》是一款基于C#编程语言开发的休闲益智游戏,名为Bubble Shooter.e,其执行文件为“bubble shooter.exe”。游戏的核心玩法是通过匹配和消除屏幕上相同颜色的彩球来得分,直至所有彩球消除或者游戏区域底部...

    Bubble Shooter 松鼠泡泡射手Unity游戏项目源码C#

    Bubble Shooter 松鼠泡泡射手Unity游戏项目源码C# 支持Unity版本2020.1.14f1及以上 商品描述 怎么玩? • 在屏幕上滑动手指,将球射向气球并粘在最近的球上。 • 当您看到3 个相同颜色的球在一起时,您可以添加更多...

    Link Bubble 浏览器开源.zip

    2. **学习资源**:对于想要了解移动浏览器开发的开发者,Link Bubble的源代码提供了宝贵的实践案例,可以深入学习如何实现高效的网页渲染、内存管理以及用户界面设计。 3. **定制化**:用户可以根据自己的需求对...

    Bubble cocos2d x 小游戏

    总的来说,通过“Bubble”这款游戏,新手可以学习到Cocos2d-x的基本架构、事件处理、碰撞检测、计分系统以及资源管理等多个方面的知识。掌握这些基础知识后,开发者就可以在此基础上开发出更复杂、更具挑战性的游戏...

    bubbleup.js图标冒泡插件

    "bubbleup.js图标冒泡插件"是一种JavaScript库,专门用于在网页中实现图标与提示信息的动态交互效果。这种效果通常称为“图标冒泡”,它允许开发者在图标上显示带有信息的小气泡,帮助用户更好地理解图标的含义或者...

    bubble breaker

    在Bubble Breaker中,玩家的每次射击、球的碰撞检测和消除等都是通过响应特定事件来实现的。 3. **图形与动画**:游戏中的小球移动、碰撞效果需要通过GDI+(Graphics Device Interface)进行绘制和更新。开发者需要...

    BubbleUp 一个C#算法程序源代码

    本篇文章将聚焦于“BubbleUp”这个C#算法程序,深入探讨其背后的逻辑与实现细节。 BubbleUp算法,通常被称为冒泡排序,是一种基础的排序算法,它通过重复遍历待排序的数列,比较相邻元素并根据需要交换位置来逐步将...

    Bubble Breaker

    在《Bubble Breaker》中,玩家需要通过发射不同颜色的泡泡,使得相同颜色的泡泡聚集在一起,达到三个或以上即可消除,获得分数。游戏的目标是尽可能地消除屏幕上的所有泡泡,同时避免泡泡堆砌到顶部导致游戏结束。...

    Bubble Breaker 游戏+人工智能

    Bubble Breaker游戏的核心玩法是通过发射不同颜色的泡泡,使相同颜色的泡泡形成三个或更多连续的组合,从而消除它们。玩家的目标是在限定的发射次数内消除所有泡泡。游戏的挑战性在于策略性的规划每次发射的方向,以...

    Bubble Breaker游戏JavaScript版源码

    《Bubble Breaker游戏JavaScript版源码解析》 在IT领域,游戏开发是一项充满挑战与创新的工作,而JavaScript作为Web开发的主流语言之一,其在游戏开发中的应用也日益广泛。本篇文章将深入探讨一个基于JavaScript的...

Global site tag (gtag.js) - Google Analytics