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

GIS的学习(三十四)osmdroid OSMBonusPack实现POI查询并标记气泡

阅读更多

    使用osmbonusPack查询附近的POI并标记实现代码如下:

package com.osmbonus.simple;

import java.util.ArrayList;

import org.osmdroid.bonuspack.location.NominatimPOIProvider;
import org.osmdroid.bonuspack.location.POI;
import org.osmdroid.bonuspack.overlays.ExtendedOverlayItem;
import org.osmdroid.bonuspack.overlays.ItemizedOverlayWithBubble;
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 android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
/**
 * 
 * 查询相关的POI并标记marker和气泡
 * 
 * 备注:需要的注意事项:
 *   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;
	private ItemizedOverlayWithBubble<ExtendedOverlayItem> poiMarkers;
    /** 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);  

    	final ArrayList<ExtendedOverlayItem> poiItems = new ArrayList<ExtendedOverlayItem>(); 
    	poiMarkers = new ItemizedOverlayWithBubble<ExtendedOverlayItem>(this,poiItems, map); 
    	NominatimPOIProvider poiProvider = new NominatimPOIProvider(); 
    	//查询服务的该点的附近的atm
    	ArrayList<POI> pois = poiProvider.getPOICloseTo(startPoint, "atm", 50, 0.1);
    	//ArrayList<POI> pois = poiProvider.getPOIAlong(road.getRouteLow(), "fuel", 50, 2.0);
    	
    	//Wikipedia POIs with GeoNames 需要申请Account
    	//GeoNamesPOIProvider poiProvider = new GeoNamesPOIProvider("YOUR_GEONAMES_ACCOUNT"); 
    	//BoundingBoxE6 bb = map.getBoundingBox(); 
    	//ArrayList<POI> pois = poiProvider.getPOIInside(bb, 75);
    	
    	//采用 Flickr 需要申请API KEY
    	//FlickrPOIProvider poiProvider = new FlickrPOIProvider("YOUR_FLICKR_API_KEY"); 
    	//BoundingBoxE6 bb = map.getBoundingBox(); 
    	//ArrayList<POI> pois = poiProvider.getPOIInside(bb, 20);
    	if(pois!=null){
    	 	for (POI poi	:	pois){                 
        		//设置气泡的信息
        		ExtendedOverlayItem poiMarker = new ExtendedOverlayItem(poi.mType, poi.mDescription,poi.mLocation, map.getContext());                 
        		//设置气泡的默认图标
        		Drawable marker = getResources().getDrawable(R.drawable.marker_poi_default);                 
        		poiMarker.setMarker(marker);  
        		//设置气泡的位置 
        		poiMarker.setMarkerHotspot(OverlayItem.HotspotPlace.CENTER);   
        		//设置POI对应的图标信息
        		if (poi.mThumbnail != null){                         
        			poiMarker.setImage(new BitmapDrawable(poi.mThumbnail));                 
        		}            
        		//添加一个marker点
        		poiMarkers.addItem(poiMarker); 
        	}
    	}
   
    	map.getOverlays().add(poiMarkers);
        
        //刷新地图
        map.invalidate();
    } 
}

 

分享到:
评论

相关推荐

    抓取高德POI生成GIS

    通过对"高德poi2GIS.py"文件的学习和实践,你可以深入理解如何将网络爬虫与GIS分析结合,从而实现从互联网数据到可视化地理信息的全过程。这不仅有助于提升编程技能,也有利于掌握GIS在实际问题中的应用。

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...

    arcgis api 结合高德POI搜索.zip

    - **高德地图API**:学习如何注册并获取API密钥,理解查询接口的参数和返回数据结构,以及如何将结果在地图上展示。 - **坐标转换**:由于天地图和高德地图可能使用不同的坐标系统,所以开发者需要知道如何在它们...

    Springboot+Poi实现Excel的导入导出

    在本项目中,Spring Boot结合MyBatis和POI,实现了一个完整的数据流转流程:从MySQL数据库中查询数据,使用POI将查询结果集转换为Excel文件保存到本地;反之,也可以读取本地Excel文件,将其中的数据导入到MySQL...

    GIS设计器,设计器支持所见即所得的POI添加、删除、修改等功能

    JavaScript负责处理地图交互逻辑、事件监听、数据处理等任务,使得用户可以在界面上实时操作POI(Point of Interest),并立即看到结果。 4. `designer.min.js`:这是经过压缩和优化的JavaScript文件,通常用于生产...

    自定义标签实现POI导出

    标题“自定义标签实现POI导出”表明我们即将探讨的是如何使用Apache POI库来创建自定义的Excel导出功能。Apache POI是Java语言中用于读写Microsoft Office格式文件(如Word、Excel)的一个开源库。在这个场景中,...

    POI实现word和excel在线预览

    本项目提供的"POI实现word和excel在线预览"是基于Apache POI的一个实用工具集,它能够帮助开发者实现在Web环境下对这些文件的在线预览功能,无需用户下载文件到本地即可查看内容,提高了用户体验和数据安全性。...

    java实现poi模板生成PPT文件代码

    Java中的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,包括PPT(PowerPoint)文档。在这个项目中,我们将会探讨如何使用POI API来生成PPT文件,特别是通过模板的方式。以下是...

    poi读取并导出excel(jsf bean 页面的实现)

    POI读取并导出Excel(JSF Bean 页面的实现) 概述 本文将介绍如何使用POI库在JSF Bean页面中读取和导出Excel文件。通过该实现,可以实现下载地址的可选性,而不是写死的固定地址。 相关知识点 1. POI库的使用:...

    Java实现POI导出Excel

    Java实现POI导出Excel是Java开发者常用的一种技术,用于生成和操作Microsoft Office Excel文件。在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章...

    java实现poi 在线预览,excel,word直接在页面显示,附带文件上传,多文件上传

    所需poi的jar包: commons-collections4-4.1.jar poi-3.17.jar poi-examples-3.17.jar poi-excelant-3.17.jar poi-ooxml-3.17.jar poi-ooxml-schemas-3.17.jar poi-scratchpad-3.17.jar xmlbeans-2.6.0.jar maven...

    POI导出 POI导出 POI导出

    POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...

    POI实现Excel导入导出并附带加载进度条

    本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,增强了用户体验。 首先,Apache POI的核心类HSSFWorkbook和XSSFWorkbook分别用于处理老版本的.xls和新版本的.xlsx文件。在导入...

    poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad

    标题中的"poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad"提及的是Apache POI项目中的多个关键组件和目录结构。Apache POI是一个开源的Java库,专门用于读写Microsoft Office...

    基于poi的excel导入.doc

    "POI导入Excel知识点" POI简介 Apache POI是一个开源的Java库,用于处理Microsoft Office文档,包括Excel、Word、PowerPoint等。POI提供了一个纯Java的解决方案,用于读取、写入和操作Office文档。 POI中的Excel...

    最新南京信息点poi数据shp格式gis地理小区学校大厦等等各类无偏移坐标2022年3月

    标题中的“最新南京信息点poi数据shp格式gis地理小区学校大厦等等各类无偏移坐标2022年3月”表明这是一份关于南京地区的GIS(Geographic Information System,地理信息系统)数据,具体是点状地物信息,且以SHP...

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...

    poi数据(世界 大多数国家 )

    标签“POI”进一步强调了这个资源的主题,POI不仅是地理位置上的标记,也是信息检索和服务提供的关键元素。在GIS中,POI数据的管理涉及到坐标系统的选择、分类体系的建立、属性信息的定义等技术细节。同时,POI数据...

    2023年部分城市poi矢量数据

    标题 "2023年部分城市poi矢量数据" 提供了...总之,这份数据集是GIS学习和实践的宝贵资源,涵盖了多个中国主要城市的POI信息,可以用来提升GIS技能,同时对于数据分析、城市规划和地理研究等领域也有着重要的参考价值。

    poi实现多sheet合并

    本教程将详细讲解如何使用Apache POI库来实现多Sheet的合并。 首先,我们需要理解Apache POI的基本用法。Apache POI提供了HSSFWorkbook(用于旧版的.XLS文件)和XSSFWorkbook(用于较新的.XLSX文件)类,它们分别...

Global site tag (gtag.js) - Google Analytics