Skip to content

室内地图API

简介

​ 智石科技室内地图 JavaScript API,是由 JavaScript 语言编写的应用程序接口,它能够帮助您在网站或移动端中构建功能丰富、交互性强的室内地图应用程序。除了基本地图功能的接口外,室内地图JavaScript API还提供了诸如室内搜索、室内路线规划等数据服务,您可以根据自己的需要进行选择性使用。

产品特色

  • 轻捷的架构

    (1) API文件小,简单易用

    (2) 模块化地图功能,各模块按需加载

  • 丰富的可视化效果

    (1) 地图拖拽、缩放平滑流畅

    (2) 点标记、信息窗体效果绚丽

  • 灵活开放的接口设计

    (1) 支持用户自定义点标记、信息窗口等的样式

    (2) 支持用户自定义插件工具,灵活的进行地图操作

准备工作

了解了室内地图基础流程后,接下来进行室内地图开发的准备工作。

  • 您需要成为智石的用户;
  • 获取BuildlingID、Token,请在(开放平台>建筑与地图>建筑管理)中查看;

快速上手

  • 1、引入智石地图API文件

html
<link rel="stylesheet" type="text/css" href="//brtmap.com/js-sdk/3.x/brtmap-2.5.1.css"/>
<script type="text/javascript" src="//brtmap.com/js-sdk/3.x/brtmap-2.5.1.js"></script>
  • 2、创建地图容器元素

html
<div id="brtmap"></div>
  • 3、创建地图实例

javascript
var $map = new brtmap.Map({
    container: 'brtmap',
    buildingID: '您的建筑ID',
    token: '建筑有效token
});
  • 4、完整示例

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> Brtmap </title>
    
    <!--引入JSSDK-->
    <link rel="stylesheet" type="text/css" href="//brtmap.com/js-sdk/3.x/brtmap-2.5.1.css"/>
    <script type="text/javascript" src="//brtmap.com/js-sdk/3.x/brtmap-2.5.1.js"></script>
    
</head>
<body>
<div id="brtmap"></div>
<script>
    // 地图实例
    var map = new brtmap.Map({
        container: 'brtmap',
        buildingID: '您的建筑ID',
        token: '建筑有效token'
    });
    
</script>
</body>
</html>

API - 参考手册

1、Map

​ 地图类,您可以使用地图方法来控制您的地图操作,例如:打开3D模式、设置初始楼层、旋转地图、缩放地图、进行路径规划等。

构造函数说明
brtmap.Map(opts:MapOptions)在指定的容器内创建地图实例
MapOptions类型说明
containerHtmlElement / String地图容器DIV的ID值或者DIV对象
buildingIDString地图建筑ID
tokenString地图有效token
floorIDString指定显示的楼层ID
use3DBoolean3D拉伸模式
reportBoolean统计上报
zoomNumber层级(推荐 15 - 22)
bearingNumber旋转角度
pitchNumber倾斜角度 (0 - 60)
pitchWithRotateBoolean默认true,是否可操作地图倾斜
dragPanBoolean默认true,是否可操作地图平移
dragRotateBoolean默认true,是否可操作地图旋转
doubleClickZoomBoolean默认true,是否可操作地图双击缩放
touchZoomRotateBoolean默认true,是否可操作地图手指缩放与旋转
floorSameZoomBoolean切换楼层后保持zoom不变
logoPositionObject / Stringlogo控件位置
floorPositionObject / String楼层切换控件位置
zoomPositionObject / Stringzoom控件位置
loadSyncRoutesBoolean加载路网数据到本地
languageString语言类型 (zh / en)
modeString引擎模式 (auto:在线矢量地图 custom: 引擎模式)
localIdeographFontFamilyString文字风格
floorSameZoom 2.5.0+Boolean楼层切换时 保持zoom层级不变
autoBounds 2.5.0+Boolean地图边界限制(拖动地图时,限制地图在可视区域内)
routeAnimationFps 2.5.0+Boolean路径规划 箭头的动画频率
extrusionOpacity 2.5.0+Number3D立体建筑透明度(0.1 ~ 1.0) 默认 1.0
routeColor 2.5.0+String路线颜色
routeSize 2.5.0+Number路线宽(像素单位)
方法返回值说明
setFloor(floorId)设置显示楼层
setUse3D(Boolean)2D/3D切换
setLanguage(String)语言切换
setFont(String/Object, Value)设置label字体样式
setFillColor(POIIDS, Color)设置区块颜色
setRouteColor(Color1, Color2)设置路径颜色,Color1:路线 Color2:覆盖(已 经过 时)
setReportEndPOI(poi)预设终点poi信息,统计终点信息
reportSearchKeyword(value)上报搜索关键词
requestRouteDistance(start, end, callback)获取楼梯、扶梯、电梯路线路径全长距离
requestRoute(start,end,stop?,success, error, params)路径规划
requestRouteSync(start,end,stop?,params)Routes离线版路径规划,属性 loadSyncRoutes 需设为true
setPassedPoint(point)设置路线覆盖
resetPassedPoint()重置路线覆盖
showRoute(routeIndex)路径规划为多途径点模式,该方法主要设置突显指定路段
getRoute()Routes获取当前规划路径信息
resetRoute()重置路径
getRouteDistance()Object获取定位点与路径(全长/已经过/剩余)距离
getNearPointByRoute()Object获取路径上的吸附点数据
getCutLineByPointAndLength(Point, length)RouteArray获取路径段
adsorbentAnalyze()Object获取路径上的吸附点数据(离线版) 属性 loadSyncRoutes 需设为true
getMapPoi(LngLat)POI查询当前显示楼层poi信息
getOnlinePoi(LngLat, callback)Object在线API获取poi信息
zoomIn()地图放大一级
zoomOut()地图缩小一级
zoomTo(zoom)设置地图缩放级别(有过度效果)
setZoom(zoom)设置地图缩放级别
getZoom()Zoom获取地图当前级别
getBaseZoom()Zoom地图全屏显示基础级别
getCoverZoom() 2.5.0+Zoom查看全景图的合适级别
checkPointInBounds(lnglat)2.5.0+Boolean检测点是否在地图区域内
getNearDistanceInBounds(lnglat)2.5.0+Number计算点到区域界限的最近距离
panTo(LngLat)设置地图中心点(有过度效果)
setCenter(LngLat)设置地图中心点
getCenter()Lnglat获取地图中心点经纬度
rotateTo(Number)设定地图旋转 (有过度效果) (0 - 360)
setBearing(Number)设置地图旋转 (0 - 360)
getBearing()Number获取地图旋转角度
setPitch(Number)设置地图倾斜角度 (0 - 60)
getPitch()Number获取地图倾斜角度
easeTo(Object)过渡 {center, zoom, bearing, pitch, duration}
jumpTo(Objet)跳转 {center, zoom, bearing, pitch, duration}
project(LngLat)ScreenPoint经纬度转换屏幕坐标
unproject(ScreenPoint)LngLat屏幕坐标转换经纬度
coordsToLnglat(Point)Lnglat地理坐标转换经纬度
lnglatToCoords(LngLat)Point经纬度转换地理坐标
queryRenderedFeatures(ScreenPoint)Object根据屏幕坐标查询地图结构数据
getContainer()HtmlElement获取地图HTML框架对象
getCanvas()Canvas获取canvas画布对象
getFloorInfoArray()Array获取所有楼层数据集合
getFloorInfoById(floorId)Object根据楼层ID获取楼层简介信息
getFloorInfoByIndex(floorNumber)Object根据楼层号获取楼层简介信息
showFloorControl()显示楼层切换控件
hideFloorControl()隐藏楼层切换控件
showScaleControl()显示比例尺控件
hideScaleControl()隐藏比例尺控件
showZoomControl()显示ZOOM控件
hideZoomControl()隐藏ZOOM控件
showLabelLayer()显示地图元素名称
hideLabelLayer()隐藏地图元素名称
showFacility(type, values)显示公共设施(type:’cid’ / ’poiid’) (values: string/array)
hideFacility(type, values)隐藏公共设施(type:’cid’ / ’poiid’) (values: string/array)
resize()调整地图大小
remove()注销地图
on(event, handler)注册监听事件
once(event, handler)注册监听事件(只执行一次)
off(event, handler)注销监听事件
事件参数说明
mapreadyObject地图加载完毕
floorstartObject换前
floorendObject楼层切换后
clickMapEvent地图单击
dblclickMapEvent地图双击
zoomMapEvent地图缩放发生改变
zoomstartMapEvent地图缩放发生改变前
zoomendMapEvent地图缩放发生改变后
moveMapEvent地图平移时
movestartMapEvent地图平移前
moveendMapEvent地图平移后
rotateMapEvent地图旋转时
rotatestartMapEvent地图旋转前
rotateendMapEvent地图旋转后
pitchMapEvent地图倾斜时
pitchstartMapEvent地图倾斜前
pitchendMapEvent地图倾斜后
mouseoverMapEvent鼠标进入地图时
mouseoutMapEvent鼠标离开地图时
mouseupMapEvent鼠标弹起时
mousedownMapEvent鼠标按下时
touchstartMapEvent手指触摸时
touchmoveMapEvent手指移动时
touchendMapEvent手指离开时
resizeMapEvent地图大小发生改变时
removeMapEvent地图注销时

1.1 常用API示例

javascript
// 设置显示楼层
// floorId: 楼层ID
// callback: 回调函数
map.setFloor(floorId:String, callback:Function);
javascript
// 设置地图拉伸模式
map.setUse3D(true); // true 3D效果  false  2D效果
  • setLanguage

javascript
// 设置语音类型
map.setLanguage('zh'); // zh 中午  en 英文
javascript
// 设置文字风格
// 方式1
map.setFont({
	color: '#0099FF',	// 文字颜色
	size: 12			// 文字大小
	iconSize: 20,		// 图钉大小
	haloColor: '#999999',// 文字边框颜色
	haloWidth: 2		// 文字边框宽度
});

// 方式2
map.setFont('color', '#0099FF'); // 设置文字颜色
map.setFont('size', 12);		// 设置文字大小
...
  • setFillColor

javascript
// 设置区块颜色
// 方式1 
map.setFillColor(['poiId1', 'poiId2', 'poiId3'], '#0099FF');
// 方式2
map.setFillColor([['poiId1', '#0099FF'], ['poiId2', '#FF3300'], ['poiId3', '#000000']]);
  • setRouteColor

javascript
// 设置路线颜色
map.setRouteColor('#0099FF', '#999999');
  • requestRouteDistance

javascript
// 获取上下楼交通方式时 返回各自的距离 (楼梯/电梯/扶梯)
map.requestRouteDistance(start, end, res => {
    console.log('res', res);
});
  • requestRoute

javascript
// 路径请求
map.requestRoute(start, end, routes => {
    console.log('routes', routes);
}, error => {
    console.log('error', error);
}, {
    // 150012-楼梯  150013-电梯   150014-扶梯
    ignore: ['150012','150013'],	// 规划路径越垮楼层时  只从'扶梯'上下楼
    // 是否车行规划
    vehicle: true					// true  (vehicle > ignore)
});
  • requestRouteSync

属性loadSyncRoutes:true 时有效

javascript
// 离线路径请求  
let routes = map.requestRouteSync(start, end, {
    // 150012-楼梯  150013-电梯   150014-扶梯
    ignore: ['150012','150013'],	// 规划路径越垮楼层时  只从'扶梯'上下楼
    // 是否车行规划
    vehicle: true					// true  (vehicle > ignore)
});

console.log('routes', routes);

2、Symbol

​ 地图进阶标记类,您需要的二次开发个性化需求。例如:添加图标、设置触发事件、设置文字效果等。

2.1 Marker

图钉类

构造函数说明
brtmap.Symbol.Marker(opts:MarkerOptions)创建图钉实例
MarkerOptions类型说明
urlString图标URl链接
sizeNumber图标大小 按原始图片大小缩放
angleNumber图标旋转角度
offsetArray图标偏移值 x, y
typeString默认'auto' 图标展示效果 ('map' 贴合地面)
方法返回值说明
addTo(Map)Marker添加到地图实例
setLnglat(lnglat, floorId)Marker设置图标坐标点
setRotate(Number)Marker设置旋转角度
setURL(URL)设置图标URL
setOffset(x,y)Marker设置图标偏移
setOpacity(Number)Marker设置透明度 (0-1)
show()Marker显示
hide()Marker隐藏
zIndex()Marker置顶
empty()移除图标在地图实例的坐标点
remove()销毁当前实例
javascript
// 实例对象
var marker = new brtmap.Symbol.Marker({  
    url:'./images/marker.png',
    size:0.8,  
    offset:[0,-10],
    type: 'map'	// 贴合地面
}).addTo(map);

// 设置位置  floorId 设为指定楼层
marker.setLnglat({lng, lat}, floorId);

2.2 Circle

矢量类:圆点

构造函数说明
brtmap.Symbol.Circle(opts:CircleOptions)创建圆点实例
CircleOptions类型说明
radiusNumber半径(像素单位)
colorString颜色
opacityNumber透明值 (0 - 1)
typeString默认'auto' 图标展示效果 ('map' 贴合地面)
方法返回值说明
addTo(Map)Circle添加到地图实例
setLnglat(lnglat, floorId)Circle设置圆点坐标点
setColor(String)Circle设置颜色
setOpacity(Number)Circle设置透明度 (0-1)
show()Circle显示
hide()Circle隐藏
zIndex()Circle置顶
empty()移除圆点在地图实例的坐标点
remove()销毁当前实例
javascript
// 实例对象
var circle = new brtmap.Symbol.Circle({
	radius: 5,
	opacity:0.8,  
	color:'#FF6600',
    type: 'map'	// 贴合地面
}).addTo(map);

// 设置位置  floorId 设为指定楼层
circle.setLnglat({lng, lat}, floorId);

2.3 Polyline

矢量类:线

构造函数说明
brtmap.Symbol.Polyline(opts:PolylineOptions)创建线实例
PolylineOptions类型说明
colorString颜色
opacityNumber透明值 (0 - 1)
widthNumber线宽
方法返回值说明
addTo(Map)Polyline添加到地图实例
setLnglats(lnglats:Array, floorId)Polyline设置线路径
setColor(String)Polyline设置颜色
setOpacity(Number)Polyline设置透明度 (0-1)
setWidth(Number)Polyline设置线宽
show()Polyline显示
hide()Polyline隐藏
zIndex()Polyline置顶
empty()移除线在地图实例的坐标点
remove()销毁当前实例
javascript
// 实例对象
var polyline = new brtmap.Symbol.Polyline({
	opacity:0.8,  
	color:'#FF6600',
    width: 5
}).addTo(map);

// 设置位置  floorId 设为指定楼层
polyline.setLnglats([{lng:1, lat:1}, {lng:2, lat:2}], floorId);

2.4 Polygon

矢量类:面 (多边形)

构造函数说明
brtmap.Symbol.Polygon(opts:PolygonOptions)创建多边形实例
PolygonOptions类型说明
colorString颜色
opacityNumber透明值 (0 - 1)
方法返回值说明
addTo(Map)Polygon添加到地图实例
setLnglats(lnglats:Array, floorId)Polygon设置多边形路径
setColor(String)Polygon设置颜色
setOpacity(Number)Polygon设置透明度 (0-1)
show()Polygon显示
hide()Polygon隐藏
zIndex()Polygon置顶
empty()移除多边形在地图实例的坐标点
remove()销毁当前实例
javascript
// 实例对象
var polygon = new brtmap.Symbol.Polygon({
	opacity:0.8,  
	color:'#FF6600'
}).addTo(map);

// 设置位置  floorId 设为指定楼层
polygon.setLnglats([{lng:1, lat:1}, {lng:2, lat:2}, {lng:3, lat:3}], floorId);

2.5 Label

HtmlDivElement 类

构造函数说明
brtmap.Symbol.Label(opts:LabelOptions)创建HTML元素Label实例
LabelOptions类型说明
textString标签文字
sizeNumber字体大小
colorString字体颜色
offsetArray字体偏移值 x,y
classNameString扩展类名(用css自定义控制)
方法返回值说明
addTo(Map)Label添加到地图实例
setLnglat(lnglat, floorId)Label设置文字标签坐标点
setText(String)Label设置文本内容
setAttr(Attr, Value)Label设置元素自定义属性
addClass(String)Label添加类名
removeClass(String)Label移除类名
show()Label显示
hide()Label隐藏
empty()移除文字标签在地图实例的坐标点
remove()销毁当前实例
javascript
// 实例对象
var label = new brtmap.Symbol.Label({
	text: '智石科技',
	size: 12,
	color: '#0099FF'
}).addTo(map);

// 设置位置  floorId 设为指定楼层
label.setLnglat({lng, lat}, floorId);

2.5 DivMarker

HtmlDivElement 类

构造函数说明
brtmap.Symbol.DivMarker(opts:DivMarkerOptions)创建HTML元素Div实例
DivMarkerOptions类型说明
contentString内容
offsetArrayDiv偏移值 x,y
classNameString扩展类名(用css自定义控制)
方法返回值说明
addTo(Map)DivMarker添加到地图实例
setLnglat(lnglat, floorId)DivMarker设置Div坐标点
setContent(String)DivMarker设置Div内容
setAttr(Attr, Value)DivMarker设置元素自定义属性
addClass(String)DivMarker添加类名
removeClass(String)DivMarker移除类名
show()DivMarker显示
hide()DivMarker隐藏
empty()移除Div在地图实例的坐标点
remove()销毁当前实例
javascript
// 实例对象
var divMarker = new brtmap.Symbol.DivMarker({
	content: '<div>DivMarker</div>',
	className: 'custom-div-marker'
}).addTo(map);

// 设置位置  floorId 设为指定楼层
divMarker.setLnglat({lng, lat}, floorId);

3、Search

搜索服务类,提供POI的位置查询服务。

构造函数说明
brtmap.Search(options:Object)创建查询服务实例
SearchOptions类型说明
buildingIDString建筑ID 如果填写当前buildingID、token则addTo传入的地图对象建筑不生效
tokenString建筑有效token
方法返回值说明
addTo(Map)Search添加到地图实例
query(opts:QueryOptions)查询
QueryOptions类型说明
typeString查询类型
floorIdString查询楼层ID
valueString模糊查询内容
Type说明
name匹配poiName
poiid匹配poiId
cid匹配categoryId
letter匹配首字母
javascript
// 实例对象
var $search = new brtmap.Search().addTo(map);

// 匹配name查询
$search.query({
    type: 'name',
    value: 'xxxxxx',
}, function (res) {
    console.log('res', res);
});

// 匹配poiId查询
$search.query({
    type: 'poiid',
    value: '0023xxxxxxxxxx',
}, function (res) {
    console.log('res', res);
});

// 匹配categoryId查询
$search.query({
    type: 'cid',
    value: '160013',
}, function (res) {
    console.log('res', res);
});

// 匹配首字母查询
$search.query({
    type: 'letter',
    value: 'zs',
}, function (res) {
    console.log('res', res);
});

// 扩展 按楼层筛选
$search.query({
    type: 'name',
    value: 'xxxx',
    floorId: '0023xxxxxF01'
}, function (res) {
    console.log('res', res);
});

4、Heatmap

热力图。以高亮的形式显示数据密集程度。根据密集程度的不同,图上会呈现不同的颜色,以直观的形式展现数据密度。

构造函数说明
brtmap.Heatmap(opts:HeatmapOptions)创建热力图实例
HeatmapOptions类型说明
radiusNumber/Array热力点半径(像素为单位),该值使热图更平滑
intensityNumber/Array热图的强度,主要根据缩放级别调整热图
opacityNumber热图点透明度 (0-1)
colorArray密度值定义每个像素的颜色
方法返回值说明
addTo(Map)Heatmap添加到地图实例
setData(data)设置热力数据
Data说明
max当前数据的最高密度
data数据集合 Object
Object说明
lng经度
lat纬度
count密度值
javascript
// 实例对象
var $heatmap = new brtmap.Heatmap({
    radius: [10, 30],
    intensity: [1, 5],
    opacity: 0.8,
    color: [
        0.05,'#7888D8',
        0.1, '#4DD835',
        0.2, '#B9D124',
        0.4, '#DEB92A',
        0.6, '#DE6F2A',
        1.0, '#FF3300'
    ]
}).addTo(map); 

//设置热图数据
$heatmap.setData({
    max: 200,   //最大密度
    data: [
        {
            lng: 123.123, // 经度
            lat:  30.123, // 纬度
            count: 20   // 当前点密度
    	},
    	{
            lng: 123.456,
            lat:  30.456,
            count: 100
    	},
    	...
    ]      
});

4、技术支持

到此,祝贺您,已经熟悉了地图开发过程! 如果您尚未完成地图开发工作,或需要技术支持,请联系您的商务经理,或致电4000-999-023,智石全体同仁欢迎您的来访。

官方网站 室内导航交流QQ群:212955437