IOS版本全景地图开发方法

2015.05.01 · Bai Gong

全景地图相对三维地图而言,在对地图的精度要求不高的情况下,只需要进行全景相机拍摄就可以生成,从而大大减少了地图制作成本, 本文介绍了IOS手机上利用二维地图结合三维全景地图逼真生动还原展馆场景的方法,其中二维地图可以进行位置定位,三维地图镜头可上下左右旋转观看, 也可以倾斜手机自动旋转,同时还能实现展项的切换显示。

 

 

一、        导览二维地图模块

1.       功能说明

该模块分楼层显示二维地图,使游客了解展馆整体布局、展项分布地点等信息,地图可以实现缩放、平移以及切换楼层等操作。

2.       算法设计

调用UIImageView控件以及手势操作(UIPanGestureRecognizer)改变地图的坐标系统,实现地图缩放及平移。利用FPPopover类弹出切换楼层列表,实现楼层的切换。

 

3.       类的设计

类名

函数名或属性名

功能描述

FirstViewController(导览二维地图类)

 

 

-(void)autoCheckNetwork

自动检测网络

-(void)checkUserType

检测用户是否为管理员

-(void)addBtnsToView

创建右侧的菜单按钮

-(void)pan

拖拽地图

-(void)pinch

缩放地图

-(void)showMyLoc

显示位置

-(void)updateMyLoc:   withFloor

根据楼层更新位置

-(void)download2DJSONWithString

下载二维地图数据

NSTimer* stepTimer

计步定时器

IBOutlet Map2DView   *m_map2dView

二维地图类的对象

 

 

 

4.       界面设计

说明 

二、        导览全景地图模块

1.       功能说明

该模块分区域展示展馆三维空间场景,更逼真生动还原展馆,三维地图镜头可上下左右旋转观看,也可以倾斜手机自动旋转,同时还能实现展项的切换显示。

2.       算法设计

利用扩展库PanoramaGL实现三维场景的呈现以及旋转和重力感应的功能。

3.       类的设计

类名

函数名或属性名

功能描述

SecondViewController(导览全景地图类)

 

 

-(void)addBtnsToView

右侧的菜单列表

-(void)autoCheckNetwork

自动检测网络状态

-(void)selectPanorama

设置全景图片

-(void)selectFloorPanorama:WithZgzdInfo

根据展项信息设置对应的全景图片

-(void)setUpLocationManager

设置指南针

-(void)addAppTitleView

创建界面上的按钮

-(void)view:didClickHotspot:screenPoint:   scene3DPoint

点击全景地图上的脚印按钮

-(void)UpdateCurentPositionLable

更新当前的展项名

NSTimer* stepTimer

计步定时器

Bird2dMapView*   m_pBirdView

鸟瞰图对象

 

4.       界面设计

说明 

三、        二三维地图联动模块

1.       功能说明

该模块可以实现从二维地图的展项定位到三维全景场景的功能,利用三维全景更直观的向游客展示展馆展项。

2.       算法设计

将二维地图展点的ID传到三维地图界面,利用PanoramaGL呈现展点的三维场景。

3.       类的设计

类名

函数名或属性名

功能描述

FirstAndSecondViewController(二三维地图联动类)

 

 

-(ZgzdInfo*)FindZgzdByOID

根据二维地图传过来的展项的id得到展项的信息

-(void)selectPanorama

设置具体图片

-(bool)UpdateLoc

更新鸟瞰图的定位位置

 

4.       界面设计

说明