详细流程文档请移步->帮助与文档
Eclipse版Demo->室内开发包Eclipse
室内定位开发包是基于GIS框架和GEOS几何计算开源库,为开发者提供了的室内地图显示、路径规划、室内定位等相关GIS功能。本开发包支持的Android版本为18或更高,库架构支持'armeabi', 'armeabi-v7a', 'x86'
下载本资源,目录结构:
Example/ 示例工程
Documents/ API文档
SDKs/ jar、so库和图标资源
参见详细集成文档
<!-- 在线更新数据 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 定位扫描beacon用 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- 拷贝数据到sd卡用,targetSdkVersion>=23还需手动申请 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--Android6.0 后蓝牙扫描需要蓝牙定位权限:COARSE或者FINE均可,targetSdkVersion>=23还需手动申请-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application>
<!-- add your Activity -->
<!-- 扫描beacon服务 -->
<service android:name="com.ty.locationengine.ibeacon.BeaconService" />
</application>
static {
System.loadLibrary("TYMapSDK");
System.loadLibrary("TYLocationEngine");
}
<com.ty.mapsdk.TYMapView android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
TYMapEnvironment.initMapEnvironment();
TYMapEnvironment.setRootDirectoryForMapFiles(dir);
mapView = (TYMapView) findViewById(R.id.map);
//设置地图回调
mapView.addMapListener(this);
//预设楼层
mapView.setFloor("F1");
//加载地图资源
mapView.init(Constants.BUILDING_ID,Constants.APP_KEY); 申请appKey:(http://open.brtbeacon.com)
@Override public void mapViewDidLoad(TYMapView mapView,Error error) {
if(error == null){
List<TYMapInfo> mapInfos = mapView.allMapInfo();
//mapView.setFloor(mapInfos.get(0));
}else {
Utils.showToast(this, error.toString());
}
}
<calloutViewStyle backgroundColor="#ffffff"//弹窗背景颜色
backgroundAlpha="255" //弹窗背景透明度
frameColor="#66FFCC" //弹窗边框颜色
cornerCurve="10" //弹窗边框拐角度数
maxHeight ="800" //最大高度pixels
maxWidth ="800" //最大宽度pixels
anchor="5" /> //锚指向【0~8:左上/上中/右上/右中/右下/下中/左下/左中/自动】
Callout mapCallout = mapView.getCallout();
mapCallout.setStyle(R.xml.callout_style);//加载样式,或代码设定样式
//mapCallout.setMaxWidth(Utils.dip2px(this, 300));
//mapCallout.setMaxHeight(Utils.dip2px(this, 300));
mapCallout.setContent(loadCalloutView(title, detail));//设置弹窗内容view
mapCallout.show(location);
@Override public void mapViewDidLoad(final TYMapView mapView, Error error) {
if (error != null) return;
mapView.routeManager().addRouteManagerListener(this);
}
mapView.showRouteStartSymbolOnCurrentFloor(startPoint);
mapView.showRouteEndSymbolOnCurrentFloor(endPoint);
//开始规划路线 routeManager.requestRoute(startPoint, endPoint);
@Override public void didSolveRouteWithResult(TYOfflineRouteManager tyOfflineRouteManager, TYRouteResult rs) {
mapView.setRouteResult(rs);
mapView.showRouteResultOnCurrentFloor();//地图上显示线路
}
@Override public void didFailSolveRouteWithError(TYOfflineRouteManager tyOfflineRouteManager, Exception e) {
//线路规划错误
}
locationManager = new TYLocationManager(this, Constants.BUILDING_ID, Constants.APP_KEY);
locationManager.addLocationEngineListener(this);
locationManager.startLocation();
@Override
public void didRangedBeacons(TYLocationManager arg0, List<TYBeacon> arg1) {
// Beacon扫描结果事件回调,返回符合扫描参数的所有Beacon
}
@Override
public void didRangedLocationBeacons(TYLocationManager arg0, List<TYPublicBeacon> arg1) {
// 定位Beacon扫描结果事件回调,返回符合扫描参数的定位Beacon,定位Beacon包含坐标信息。此方法可用于辅助巡检,以及基于定位beacon的相关触发事件。
}
@Override
public void didUpdateDeviceHeading(TYLocationManager arg0, double newHeading) {
// 设备方向改变事件回调。结合地图MapMode可以处理地图自动旋转,或箭头方向功能。
//mapView.setMapMode(TYMapViewMode.TYMapViewModeDefault);
//mapView.setMapMode(TYMapViewMode.TYMapViewModeFollowing);
Log.i(TAG,"地图初始北偏角:"+mapView.building.getInitAngle()+";当前设备北偏角:"+newHeading);
mapView.processDeviceRotation(newHeading);
}
@Override
public void didUpdateImmediateLocation(TYLocationManager arg0, TYLocalPoint arg1) {
// * 位置更新事件回调,位置更新并返回新的位置结果。
// 与[TYLocationManager:didUpdateLocatin:]方法相近,此方法回调结果未融合设备传感器信息,灵敏度较高,适合用于行车场景下或传感器无效
}
@Override
public void didFailUpdateLocation(TYLocationManager tyLocationManager, Error error) {
if (error != null) Log.i(TAG,error.toString());
}
@Override
public void didUpdateLocation(TYLocationManager arg0, TYLocalPoint newLocalPoint) {
// 位置更新事件回调,位置更新并返回新的位置结果。
// 与[TYLocationManager:didUpdateImmediationLocation:]方法相近,此方法回调结果融合设备传感器信息,稳定性较好,用于步行场景下。
Log.i(TAG, newLocalPoint.getX()+" "+newLocalPoint.getY());
mapView.showLocation(newLocalPoint);
//mapView.showRemainingRouteResultOnCurrentFloor(newLocalPoint);
}
使用与地图数据配套的iBeacon设备部署方案,才可以实现室内地图定位。 配置导航的beacon信息,请下载配置端BrightBeacon 示例地图,需要准备6个iBeacon设备;配置参数列表如下:
Floor | UUID | Major | Minor |
---|---|---|---|
F1 | E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 | 10000 | 11261 |
F1 | E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 | 10000 | 11262 |
F1 | E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 | 10000 | 11263 |
F1 | E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 | 10000 | 11264 |
F2 | E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 | 10000 | 11265 |
F2 | E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 | 10000 | 11266 |
①前往开放平台开放平台http://open.brtbeacon.com并登录
②首次注册用户需创建【应用AppKey】,即可申请地图
②登录查看你的【建筑列表】获取AppKey,【设备管理】获取UUID等参数,填入示例工程即可