android矢量地图引擎,GitHub - UbiroutingDevelop/UbiMap-Android-Demo: 使用识途UbiMap矢量图引擎显示地图Demo及文档...
UbiMap Demo
UbiMap矢量图引擎是由识途团队研发的矢量地图引擎,可用来显示商场、博物馆、景区等特定场所的精细地图。
特点:
操作流畅、体验良好;
轻量级的SDK;
轻量级的矢量地图:一般地图仅不到300KB。
支持导航;
跨平台格式,iOS\Android\HTML5
与识途室内定位SDK完美配合,为室内定位解决方案中不可获取一环;
#1 准备工作
ubimaplib_v1.3.jar
libubimap.so
若您使用eclipse ADT,项目下新建libs文件夹,将其按如下方式放置:
若为Android Studio,此略。
编辑AndroidMenifest.xml,添加权限:
添加Key:
android:name="ShituKey"
android:value="YourKey" />
#2 SDK调用 - 下载资源包
识途矢量地图SDK,在使用前,需预先下载一个资源包,该资源包包含所有地图所需渲染素材;该资源包只需下载一次。
调用:
mMapDownloader = new UbiMapDownloader();
mMapDownloader.tryDownloadRes(new UbiMapDownloadListener() {
// If no resource file should be downloaded.
@Override
public void onNoNeedDownload() {
// Usually do nothing here
}
// Downloading failed, may caused by network problem.
@Override
public void onFailed(final String arg0) {
Toast.makeText(MainActivity.this, "download failed because of " + arg0, Toast.LENGTH_LONG).show();
if (mDownloadDialog != null)
mDownloadDialog.dismiss();
}
// On downloading, and 'percent' indicates the process of
// downloading.
@Override
public void onDownloading(final float percent) {
mDownloadDialog.setMessage("downloading resource.." + (int) (percent * 100) + "%");
}
// On download succeeds.
@Override
public void onDownloadSuccess() {
mDownloadDialog.dismiss();
}
// On download starts.
@Override
public void onDownloadStart() {
if (mDownloadDialog != null)
mDownloadDialog.dismiss();
mDownloadDialog = new ProgressDialog(MainActivity.this);
mDownloadDialog.setMessage("downloading resource..");
mDownloadDialog.setCancelable(false);
mDownloadDialog.show();
}
});
#3 下载地图
获取您所拥有的地图,必须事先获取MapId.
根据MapId下载地图:
final long mapId = 1000361;
mMapDownloader.tryDownloadMap(mapId, new UbiMapDownloadListener() {
@Override
public void onNoNeedDownload() {
// Usually do nothing
Intent i = new Intent();
i.putExtra("mapId", mapId);
i.setClass(MainActivity.this, MapActivity.class);
MainActivity.this.startActivity(i);
}
@Override
public void onFailed(String arg0) {
// Must check the NULL situation of mDownloadDialog, because
// the
// onDownloadStart() is
// only invoked when there is a new version of map to be
// downloading.
if (mDownloadDialog != null)
mDownloadDialog.dismiss();
Toast.makeText(MainActivity.this, "download failed because of " + arg0, Toast.LENGTH_LONG).show();
}
@Override
public void onDownloading(float percent) {
mDownloadDialog.setMessage("downloading map.." + (int) (percent * 100) + "%");
}
@Override
public void onDownloadSuccess() {
mDownloadDialog.dismiss();
Intent i = new Intent();
i.putExtra("mapId", mapId);
i.setClass(MainActivity.this, MapActivity.class);
MainActivity.this.startActivity(i);
}
@Override
public void onDownloadStart() {
if (mDownloadDialog != null)
mDownloadDialog.dismiss();
mDownloadDialog = new ProgressDialog(MainActivity.this);
mDownloadDialog.setMessage("downloading map..");
mDownloadDialog.setCancelable(false);
mDownloadDialog.show();
}
});
#3 加载地图
UbiMapView mMap = (UbiMapView) findViewById(R.id.mapview);
mMap.load(mapId);
#4 定位点
UbiMap能通过传入一系列坐标,显示当前位置。但定位本身并不属于UbiMap SDK的功能范畴,您可下载识途定位SDK实现室内定位的功能,也可通过其他室内定位SDK来传入坐标。。
##4.1 坐标
// 坐标为该矢量地图的相对像素坐标
mMap.position(x, y);
##4.2 角度
// 刷新定位点角度
mMap.angle(mDegree);
##4.3 跟随模式
跟随模式,即为所有坐标的更新,都将引起地图的移动,定位点此时固定在屏幕中央。在跟随模式下,用户能对周围地图有更好的直观体验。
跟随模式在手指触摸view后自动被破坏。
//设置为跟随模式
mMap.switchFollowMode();
#5 地图POI
识途矢量地图上包含2类POI。
Mark,无区域的POI, 即该POI在地图上仅显示为一个单独的图标,常用来表示电梯、ATM、厕所、问讯处等。此类POI在实际环境中占据的区域较少,所以往往用一个单独的图标来表示;
Area, 区域POI, 即该POI在地图上显示为一个多边形,并且带有店铺图标和文字。常用来表示店铺、停车位等比较大的区域。
上述2类POI均继承自MapModel。 通过地图点击事件、搜索可获取响应的POI。此外,也可在不加载地图的情况下获取数据内的相关信息。见获取地图内POI信息
#6 点击事件
设置UbiMapListener来获取点击事件。
mMap.setOnMapListener(new UbiMapListener() {
@Override
public void onSwitchFloor(int area) {
//当切换楼层时调用
}
// When map loading completed, the floor information will be
// returned by this method. You can access floors via 'floorList'.
// Each element in 'floorList' is a instance of
// com.ubirouting.ubimaplib.model.map.Floor class.
@Override
public void onLoadData(List floorList) {
//当加载完地图后调用,返回所有楼层信息。每一个楼层信息为com.ubirouting.ubimaplib.model.map.Floor的实例,其中包含该矢量地图的像素比例尺、像素长宽、与正北夹角等信息。
}
@Override
public void onFailedLoadData() {
// 地图加载失败
}
@Override
public void onClickMap(float x, float y) {
// 当点击地图时回调
}
@Override
public void onClickArea(Area area) {
// 当点击区域时回调。区域为大块区域,常用来表示店铺、停车位等有一定面积的POI。
}
@Override
public void onClickMark(Mark mark) {
//当点击Mark时回调。Mark为地图上的无区域的小图标,常用来表示厕所、电梯、ATM等单点POI
}
});
#7 导航
// 调用后,将在地图中规划最短路径。用于定点导航
mMap.navigate(startMapModel, endMapModel);
// 根据坐标来导航,用于实时导航
mMap.navigate(x, y, endModel);
// 清除路径
mMap.clearPath();
#8 搜索
// 根据关键字搜索
List models = mMap.search(keyword);
#9 获取地图内POI信息
您可在不加载地图的情况下,获取识途矢量地图中的楼层及POI信息。
// 获取楼层信息
List floors = UbiMapDataHelper.allFloor(mMapId);
// 获取某层POI
List pois = UbiMapDataHelper.allPoi(mMapId, floorNum);
// 获取所有POI
List pois = UbiMapDataHelper.allPoi(mMapId);
android矢量地图引擎,GitHub - UbiroutingDevelop/UbiMap-Android-Demo: 使用识途UbiMap矢量图引擎显示地图Demo及文档...相关推荐
- 代码android点击效果,GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果...
Android 点击特效TouchEffects TouchEffects能够帮助你更快速方便的增加点击时候的效果,TouchEffects的目标是打造一个稳定.全面.且能更方便的自定义及个性化的一款 ...
- Github标星35K+超火的Spring Boot实战项目(附项目地址+教程文档)
今天给大家推荐一个Github上面超火的SpringBoot实战电商项目mall,目前在Github上面已经有35k+Star.该项目拥有全套教程,对学习者特别友好.全套教程的获取方式已经放在文末! ...
- android 半浮层框架,GitHub - Jodragon/AnyLayer: Android稳定高效的浮层创建管理框架
AnyLayer Android稳定高效的浮层创建管理框架. 可取代系统自带Dialog/Popup/BottomSheet等弹窗,可实现单Activity架构的Toast提示,可定制任意样式的Gui ...
- android图片美化开源,GitHub - xingxing-yan/BLImage: Android中美化图片的库。功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能...
BLImage Android中美化图片的库.功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能 效果图 添加依赖: 在project的build.gradle中添加: allp ...
- android 平台马甲举报,GitHub - qq549631030/AndroidJunkCode: Android马甲包生成垃圾代码插件...
Android垃圾代码生成插件 此插件用于做马甲包时,减小马甲包与主包的代码相似度,避免被OPPO.VIVO等应用市场识别为马甲包. 使用方法 根目录的build.gradle中: buildscri ...
- android 小红书标签,GitHub - shellljx/TagViewGroup: Android 仿小红书图片标签Group
TagViewGroup Android 仿小红书图片标签,实现了图片标签的动画,布局,水波纹,编辑等功能,还可以自定义 Tag.视频演示地址 This is a library of tags th ...
- android画板控件,GitHub - imaiya/PainterView: Android画板控件,可以写字画画并生成图片...
PainterView Android画板控件,可以写字画画并生成图片 引用 最新版本号 Gradle Project.gradle allprojects { repositories { jcen ...
- android 联系人批量插入,GitHub - Atinerlengs/InsertDemo: android 简单的批量插入通话记录、联系人、短信demo...
[toc] 批量插入 批量插入通话记录 下面是添加通话数据的代码,我们自己去构造Tb_calllogs数据,里面可以添加通话记录数据字段,由于是个简单的demo,所以只加了number.callTyp ...
- android 7 audio架构,GitHub - zozo825117/ble_audio_android: android audio框架
ble_audio_android android audio框架 蓝牙BLE又称bluetooth smart,主打的是低功耗和快速链接,所以在支持的profile并没有audio的部分,而蓝牙语音 ...
最新文章
- 服务器硬盘冷迁移后网卡无法启动问题
- OSChina 周三乱弹 —— 孤独到都和病毒发生了感情了
- Hi3516A开发--安装交叉编译器
- python 中有x y y x吗_Python: x += y 与 x = x+y 的区别
- 【C语言】10-字符和字符串常用处理函数
- Linux中sql*loader-350,SqlLoader
- [Matlab科学计算] 有限元法求二阶常微分方程
- CSS实现单行、多行文本溢出显示省略号(…)
- 西电计科院Python程序设计随课笔记(李光夏)
- 计算机桌面变窄,电脑桌面图标变小怎么调整
- 计算机音乐奇迹再现乐谱,天谕手游奇迹再现乐谱代码分享
- php魔方阵,利用C语言玩转魔方阵实例教程
- 【整理】Python中的re.search和re.findall之间的区别和联系 + re.finall中带命名的组,不带命名的组,非捕获的组,没有分组四种类型之间的区别
- [PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态
- MATLAB实现模拟推导π的值
- 【Kafka从成神到升仙系列 六】kafka 不能失去网络通信,就像西方不能失去耶路撒冷
- 柱状图python_鬼灭之刃:鬼杀队九柱实力排行,霞柱是强弱分界线
- 透过2W条评论看动漫《博人传-火影忍者新时代》
- 论文笔记—雾计算+车联网+假名—Privacy-preserved pseudonym scheme for fog computing supported internet of vehicles
- 8月11日云栖精选夜读:阿里云与神州云计算定制混合云解决方案助企业转型
热门文章
- 问题 H: 交换变量
- 如何使FRAM MCU速度更快所需功耗最低
- 最伟大的PlayStation游戏机
- 网络远程控制与登录关闭
- 给自己的博客网站加上酷炫的初音未来音乐游戏?
- android:layout_marginRight 不起作用解决方法
- python牛顿法解非线性方程组_科学网—求解多元非线性方程组F(x)=0的Newton-Raphson方法及其MATLAB实现 - 王福昌的博文...
- 光伏速进时代下的“建维”一体化路线
- 推荐使用——Piriform公司出品的4款原生64位免费精品软件!
- Oracle入门基础(十一)一一PL/SQL基本语法