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及文档...相关推荐

  1. 代码android点击效果,GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果...

    Android 点击特效TouchEffects TouchEffects能够帮助你更快速方便的增加点击时候的效果,TouchEffects的目标是打造一个稳定.全面.且能更方便的自定义及个性化的一款 ...

  2. Github标星35K+超火的Spring Boot实战项目(附项目地址+教程文档)

    今天给大家推荐一个Github上面超火的SpringBoot实战电商项目mall,目前在Github上面已经有35k+Star.该项目拥有全套教程,对学习者特别友好.全套教程的获取方式已经放在文末! ...

  3. android 半浮层框架,GitHub - Jodragon/AnyLayer: Android稳定高效的浮层创建管理框架

    AnyLayer Android稳定高效的浮层创建管理框架. 可取代系统自带Dialog/Popup/BottomSheet等弹窗,可实现单Activity架构的Toast提示,可定制任意样式的Gui ...

  4. android图片美化开源,GitHub - xingxing-yan/BLImage: Android中美化图片的库。功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能...

    BLImage Android中美化图片的库.功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能 效果图 添加依赖: 在project的build.gradle中添加: allp ...

  5. android 平台马甲举报,GitHub - qq549631030/AndroidJunkCode: Android马甲包生成垃圾代码插件...

    Android垃圾代码生成插件 此插件用于做马甲包时,减小马甲包与主包的代码相似度,避免被OPPO.VIVO等应用市场识别为马甲包. 使用方法 根目录的build.gradle中: buildscri ...

  6. android 小红书标签,GitHub - shellljx/TagViewGroup: Android 仿小红书图片标签Group

    TagViewGroup Android 仿小红书图片标签,实现了图片标签的动画,布局,水波纹,编辑等功能,还可以自定义 Tag.视频演示地址 This is a library of tags th ...

  7. android画板控件,GitHub - imaiya/PainterView: Android画板控件,可以写字画画并生成图片...

    PainterView Android画板控件,可以写字画画并生成图片 引用 最新版本号 Gradle Project.gradle allprojects { repositories { jcen ...

  8. android 联系人批量插入,GitHub - Atinerlengs/InsertDemo: android 简单的批量插入通话记录、联系人、短信demo...

    [toc] 批量插入 批量插入通话记录 下面是添加通话数据的代码,我们自己去构造Tb_calllogs数据,里面可以添加通话记录数据字段,由于是个简单的demo,所以只加了number.callTyp ...

  9. android 7 audio架构,GitHub - zozo825117/ble_audio_android: android audio框架

    ble_audio_android android audio框架 蓝牙BLE又称bluetooth smart,主打的是低功耗和快速链接,所以在支持的profile并没有audio的部分,而蓝牙语音 ...

最新文章

  1. 服务器硬盘冷迁移后网卡无法启动问题
  2. OSChina 周三乱弹 —— 孤独到都和病毒发生了感情了
  3. Hi3516A开发--安装交叉编译器
  4. python 中有x y y x吗_Python: x += y 与 x = x+y 的区别
  5. 【C语言】10-字符和字符串常用处理函数
  6. Linux中sql*loader-350,SqlLoader
  7. [Matlab科学计算] 有限元法求二阶常微分方程
  8. CSS实现单行、多行文本溢出显示省略号(…)
  9. 西电计科院Python程序设计随课笔记(李光夏)
  10. 计算机桌面变窄,电脑桌面图标变小怎么调整
  11. 计算机音乐奇迹再现乐谱,天谕手游奇迹再现乐谱代码分享
  12. php魔方阵,利用C语言玩转魔方阵实例教程
  13. 【整理】Python中的re.search和re.findall之间的区别和联系 + re.finall中带命名的组,不带命名的组,非捕获的组,没有分组四种类型之间的区别
  14. [PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态
  15. MATLAB实现模拟推导π的值
  16. 【Kafka从成神到升仙系列 六】kafka 不能失去网络通信,就像西方不能失去耶路撒冷
  17. 柱状图python_鬼灭之刃:鬼杀队九柱实力排行,霞柱是强弱分界线
  18. 透过2W条评论看动漫《博人传-火影忍者新时代》
  19. 论文笔记—雾计算+车联网+假名—Privacy-preserved pseudonym scheme for fog computing supported internet of vehicles
  20. 8月11日云栖精选夜读:阿里云与神州云计算定制混合云解决方案助企业转型

热门文章

  1. 问题 H: 交换变量
  2. 如何使FRAM MCU速度更快所需功耗最低
  3. 最伟大的PlayStation游戏机
  4. 网络远程控制与登录关闭
  5. 给自己的博客网站加上酷炫的初音未来音乐游戏?
  6. android:layout_marginRight 不起作用解决方法
  7. python牛顿法解非线性方程组_科学网—求解多元非线性方程组F(x)=0的Newton-Raphson方法及其MATLAB实现 - 王福昌的博文...
  8. 光伏速进时代下的“建维”一体化路线
  9. 推荐使用——Piriform公司出品的4款原生64位免费精品软件!
  10. Oracle入门基础(十一)一一PL/SQL基本语法