# 二、标记
# (一)定义
标记要素是一种地图数据,可用来标记地图上的任意位置点。例如标记人员位置,设备位置,活动集合点...等等。

# (二)标记集合
所有的标记数据,都存放在不同的标记集合之下。想要对标记进行操作,需要先获取标记集合。 标记集合的常用属性如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 标记集合名称 |
remark | String | 备注 |
icon | Icon | 图标 |
symbol | PointSymbol | 点符号 |
常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
queryMarkers | void | 查询集合下的所有标记要素 |
queryMarkerByName | void | 在该集合下的根据名称查找标记要素 |
createMarker | void | 创建标记 |
updateMarker | void | 更新标记信息 |
deleteMarker | void | 删除标记 |
# 1、获取标记集合
初始化成功后,可直接从Cellsys的organization对象中获取到组织下所有的标记集合。
/*执行初始化成功后,可直接获取到标记集合*/
List<MarkerSet> markerSets = Cellsys.organization.getMarkerSets();
if (markerSets != null && markerSets.size() > 0) {//无数据时为null,因此要判空
for (MarkerSet markerSet : markerSets) {
String name = markerSet.getName();//集合名称
String remark = markerSet.getRemark();//集合备注信息
Icon icon = markerSet.getIcon();//获取图标对象
PointSymbol pointSymbol = markerSet.getSymbol();//获取地图符号对象
}
}
2
3
4
5
6
7
8
9
10
# (1)图标[Icon]
图标[Icon]是数据在普通界面上的展示。标记要素[MarkerFeature]的图标由其所属的标记集合[MarkerSet]图标决定。
CoreSDK提供了CsBitmapFactory类将其转化为Bitmap。
try {
int biemapSize = 20;//位图宽高(px)
Bitmap bitmap = CsBitmapFactory.convertByIcon(icon, biemapSize);////根据Icon类生成Bitmap对象
} catch (Exception e) {
e.printStackTrace();
}
2
3
4
5
6
有关图标类[Icon]的详细介绍,可查看附-样式
# (2)点符号[PointSymbol]
点符号[PointSymbol]则是数据在地图上的点状展示。标记要素[MarkerFeature]的点符号由其所属的标记集合[MarkerSet]的点符号决定。
CoreSDK提供了CsBitmapFactory类将其转化为Bitmap。
try {
Bitmap bitmap = CsBitmapFactory.convertByPointSymbol(pointSymbol);//根据pointSymbol生成Bitmap对象
} catch (Exception e) {
e.printStackTrace();
}
2
3
4
5
有关点符号[PointSymbol]的详细介绍,可查看附-样式
# 2、新增标记集合
标记集合通过组织[Organization]对象创建。具体操作见代码示例
/*创建方法1:不传icon,默认图标*/
Cellsys.organization.createMarkerSet("集合名称", "集合描述", new CsCallback<MarkerSet>() {
@Override
public void onSuccess(MarkerSet object) {
//创建成功
}
@Override
public void onFailure(ErrorMessage errorMessage) {
//创建失败
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();
}
});
/*创建方法2:传icon,自定义图标。
从图标库获取图标以创建带自定义图标的标记集合。*/
Cellsys.organization.createMarkerSet("集合名称", "集合描述", icon, new CsCallback<MarkerSet>() {
@Override
public void onSuccess(MarkerSet object) {
//创建成功
}
@Override
public void onFailure(ErrorMessage errorMessage) {
//创建失败
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//失败信息
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
有关图标的获取方法见附-样式。
# 3、修改标记集合
标记集合通过组织[Organization]对象来修改。具体操作见代码示例
markerSet.setName("修改名称");
markerSet.setRemark("修改备注");
markerSet.setIcon(icon);//修改图标与点样式
Cellsys.organization.updateMarkerSet(markerSet, new CsCallback() {
@Override
public void onSuccess(Object object) {
//修改成功
String name = markerSet.getName();//修改后的名称
String remark = markerSet.getRemark();//修改后的备注
}
@Override
public void onFailure(ErrorMessage errorMessage) {
//修改失败
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//失败信息
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CoreSDK要求标记集合的点符号[PointSymbol]和图标[Icon]要求使用相同的图标。因此,icon属性的修改也会同事修改pointSymbol属性。
# 4、删除标记集合
标记集合通过组织[Organization]对象来删除。具体操作见代码示例
Cellsys.organization.deleteMarkerSet(markerSet, new CsCallback() {
@Override
public void onSuccess(Object object) {
//删除成功
}
@Override
public void onFailure(ErrorMessage errorMessage) {
//删除失败
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//失败信息
}
});
2
3
4
5
6
7
8
9
10
11
12
13
# (三)标记要素
标记要素是数据,每一个标记要素对象都代表一个标记。标记要素的常用属性表如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 标记集合名称 |
remark | String | 备注 |
icon | Icon | 图标 |
symbol | PointSymbol | 点符号 |
mapPoint | MapPoint | 点坐标 |
fenceInfo | FenceInfo | 围栏信息 |
标记要素的常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
- | - | - |
# 1、获取标记
标记集合[MarkerSet]提供了query方法来查询自身集合中的标记要素。具体操作见代码示例
/*查询集合中的所有标记要素*/
markerSet.queryMarkers(new CsCallback<QueryResult<MarkerFeature>>() {
@Override
public void onSuccess(QueryResult<MarkerFeature> object) {
/*分页信息-查询方法特有*/
PageInfo pageInfo = object.pageInfo;//查询接口特有的分页信息
int totalCount = pageInfo.totalCount;//数据总数
int totalPage = pageInfo.totalPage;//总页数
int pageNo = pageInfo.pageNo;//当前页码(从1开始)
int pageSize = pageInfo.pageSize;//每页查询数量(注意!不一定和当前查询的数据总量匹配)
/*获取查询结果*/
List<MarkerFeature> markerFeatures = object.data;
if (markerFeatures != null && markerFeatures.size() > 0) {//查询结果可能为null
for (MarkerFeature markerFeature : markerFeatures) {
String name = markerFeature.getName();//标记要素名称
String remark = markerFeature.getRemark();//备注
Icon icon = markerFeature.getIcon();//图标
PointSymbol pointSymbol = markerFeature.getSymbol();//点符号
MapPoint mapPoint = markerFeature.getMapPoint();//地图上的坐标点(经纬度、坐标系)
FenceInfo fenceInfo = markerFeature.getFenceInfo();//电子围栏属性
}
}
}
@Override
public void onFailure(ErrorMessage errorMessage) {
//查询失败
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//失败信息
}
});
/*根据名称查询集合中的标记数据*/
markerSet.queryMarkerByName("搜索名称", new CsCallback<QueryResult<MarkerFeature>>() {
@Override
public void onSuccess(QueryResult<MarkerFeature> object) {
/*略*/
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*略*/
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# (1)点坐标[MapPoint]
点坐标[MapPoint]是一种坐标数据类,一个对象代表一个点坐标。其常用属性表如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
latitude | double | 纬度 |
longitude | double | 经度 |
coordinateSystem | CoordinateSystem | 坐标系 |
geometryType | GeometryType | 父类属性...用来标识坐标数据类型(点、线、面) |
常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
toGeoJson | JSONObject | 将点坐标转成geoJson |
点坐标相关使用示例如下:
/*点坐标使用示例*/
double latitude = mapPoint.latitude;//纬度
double longitude = mapPoint.longitude;//经度
CoordinateSystem coordinateSystem = mapPoint.getCoordinateSystem();//坐标系
switch (coordinateSystem) {
case AMap:
//高德地图坐标系
break;
case BaiduMap:
//百度地图坐标系
break;
case WGS84:
//WGS84坐标系
break;
}
JSONObject jsonObject = mapPoint.toGeoJson();//将点坐标转成geoJson
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# (2)围栏信息[FenceInfo]
在CoreSDK中,电子围栏是一种消息提醒装置。通过对标记要素、路线要素、区域要素设置围栏信息来生成电子围栏。经过一系列的配置后,电子围栏可通过人员的位置变化来实现人员进出围栏的消息提醒。以一张区域围栏的效果图为例:
标记要素可作为电子围栏存在。点状围栏可配置触发条件(进入围栏、离开围栏),半径(米),缓冲距离(米)等属性。其具体属性表如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
triggerType | FenceTriggerType | 围栏触发类型(进入、离开) |
radius | int | 围栏半径(米) |
bufferDistance | double | 缓冲距离(米) |
常用方法如下:
方法名 | 返回类型 | 方法描述 |
---|---|---|
isEnable | boolean | 围栏是否启用 |
disableFence | void | 关闭围栏 |
enableFence | void | 启用围栏 |
getTriggerType | FenceTriggerType | 获取围栏触发类型 |
具体使用示例如下:
/*围栏信息详情获取示例*/
int radius = fenceInfo.radius;//点状围栏半径。单位:米
double bufferDistance = fenceInfo.bufferDistance;//缓冲距离。单位:米
FenceTriggerType fenceTriggerType = fenceInfo.getTriggerType();//获取围栏触发类型
switch (fenceTriggerType) {
case In://进入提醒
break;
case Out://离开提醒
break;
case Default://默认(停用围栏)
break;
}
boolean isEnable = fenceInfo.isEnable();//电子围栏是否启动
if (isEnable) {
//围栏已启用
} else {
//围栏已停用
}
/*围栏信息改动示例*/
fenceInfo.enableFence(FenceTriggerType.In);//启动电子围栏(进入提醒)
fenceInfo.enableFence(FenceTriggerType.Out);//启动电子围栏(离开提醒)
fenceInfo.disableFence();//关闭电子围栏
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 2、新增标记
标记要素[MarkerFeature]通过标记集合[MarkerSet]对象创建。具体操作见代码示例
double longitude = 113.264499;
double latitude = 23.130061;
MapPoint mapPoint = new MapPoint(latitude, longitude);//标记坐标点
markerSet.createMarker("新标记名称", "备注信息", mapPoint, new CsCallback<MarkerFeature>() {
@Override
public void onSuccess(MarkerFeature object) {
/*创建成功*/
String name = object.getName();//获取新标记名称
String remark = object.getRemark();//获取备注信息
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*创建失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//失败信息
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 3、修改标记
标记要素[MarkerFeature]通过标记集合[MarkerSet]对象修改。具体操作见代码示例
markerFeature.setName("修改后的名称");
markerFeature.setRemark("修改备注信息");
/*设置围栏信息*/
FenceInfo fenceInfo = new FenceInfo();
fenceInfo.radius = 10;//设置围栏半径
fenceInfo.bufferDistance = 5;//设置缓冲区
fenceInfo.enableFence(FenceTriggerType.In);//启动围栏(进入提醒)
markerFeature.setFenceInfo(fenceInfo);//修改围栏信息
/*设置坐标点*/
double longitude = 114.264499;
double latitude = 24.130061;
MapPoint mapPoint = new MapPoint(latitude, longitude);//标记坐标点
markerFeature.setMapPoint(mapPoint);//修改点坐标
markerSet.updateMarker(markerFeature, new CsCallback() {
@Override
public void onSuccess(Object object) {
//修改成功后,直接使用原来的对象即可。
String name = markerFeature.getName();//获取修改后的名称
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*修改失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//失败信息
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 4、删除标记
标记要素[MarkerFeature]通过标记集合[MarkerSet]对象删除。具体操作见代码示例
markerSet.deleteMarker(markerFeature, new CsCallback() {
@Override
public void onSuccess(Object object) {
//删除成功
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*删除失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//失败信息
}
});
2
3
4
5
6
7
8
9
10
11
12
13