SuperMap超图——使用SQLite数据库中的点位信息创建数据源并在图层中显示数据

        //添加显示监测点图层
private void addLayer() {
//创建点位数据源
Datasource datasource = dataSources.get("Patrol_Points");
if(datasource==null){//如果数据源是null的
//设置数据源连接信息类
DatasourceConnectionInfo connectionInfo = new DatasourceConnectionInfo();//实例化类
connectionInfo.setServer("/sdcard/SampleData/Demo/Points.udb");//设置数据存储文件名
connectionInfo.setEngineType(EngineType.UDB);//设置数据引擎类型
connectionInfo.setAlias("Points");//设置数据源的别名
//新建数据源
datasource = dataSources.create(connectionInfo);
}
if(datasource!=null){
//根据别名获得新建的数据源,并获取数据集集合类
Datasets dataSets = dataSources.get("Points").getDatasets();
if(dataSets.contains("Point")){
dataSets.delete("Point");//删除原有的数据集
}
//设置矢量数据集信息类
DatasetVectorInfo vectorInfo = new DatasetVectorInfo();
vectorInfo.setName("Point");//设置矢量数据集的名称
vectorInfo.setType(DatasetType.POINT);//设置矢量数据集的类型
//创建矢量数据集
dataSets.create(vectorInfo);
//根据名称获得矢量数据集
DatasetVector datasetVector = (DatasetVector) dataSets.get("Point");
if(datasetVector!=null){
//创建矢量数据集的字段
FieldInfo fieldInfo = new FieldInfo();
fieldInfo.setType(FieldType.TEXT);
fieldInfo.setName("PointName");
//将字段添加到数据集中
FieldInfos fieldInfos = datasetVector.getFieldInfos();
fieldInfos.add(fieldInfo);
//获得记录集
Recordset recPoint = datasetVector.getRecordset(false,CursorType.DYNAMIC);
//设置geopoint的样式
// mSymbolGroup = mWorkspace.getResources().getMarkerLibrary().getRootGroup();
// Log.e("symbol", markerid+""+ names);
GeoStyle geoStyle_P = new GeoStyle();
                geoStyle_P.setMarkerAngle(0);//设置点状符号的旋转角度,以度为单位,精确到0.1度,逆时针方向为正方向。
                geoStyle_P.setMarkerSize(new Size2D(10, 10));//设置点状符号的大小,,单位为毫米,精确到0.1毫米
                geoStyle_P.setMarkerSymbolID(3631);//设置点状符号的编码
                geoStyle_P.setLineColor(new Color(32,187,170));//设置点符号或线符号的颜色
//获得所有的监测点
List<PointUtil> points = dbmanager.findAllpoint();
for(PointUtil point:points){
Point2D p2d = new Point2D();
p2d.setX(Double.parseDouble(point.getLongitude()));
p2d.setY(Double.parseDouble(point.getLatitude()));
//获取投影坐标系类
PrjCoordSys Prj = mMap.getPrjCoordSys();
// 当投影不是经纬坐标系时,则对点进行投影转换
if (Prj.getType() != PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE) {
Point2Ds point2Ds = new Point2Ds();
point2Ds.add(p2d);
//新建投影坐标系 
PrjCoordSys desPrjCoorSys = new PrjCoordSys();
desPrjCoorSys.setType(PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE);
CoordSysTranslator.convert(point2Ds, desPrjCoorSys, Prj, new CoordSysTransParameter(), CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION);
p2d = point2Ds.getItem(0);
}
GeoPoint geoPoint = new GeoPoint(p2d);
//                 geoPoint.setStyle(geoStyle_P);
//设置字段
//recPoint.setFieldValue("PointName", point.getName());
// 添加几何对象及设置相关的字段值。
java.util.Map<String, Object> values = new HashMap<String, Object>();
values.put("PointName", point.getName());
boolean isAdd = recPoint.addNew(geoPoint,values);
if(isAdd){
recPoint.update();
}
}
//创建图层
if(layer==null){
layer = mMap.getLayers().add(datasetVector, true);
}else{
mMap.getLayers().remove(layer.getName());
layer = mMap.getLayers().add(datasetVector, true);
}
LayerSettingVector layerSettingVector = (LayerSettingVector)layer.getAdditionalSetting();
layerSettingVector.setStyle(geoStyle_P);
mMap.setViewBounds(recPoint.getBounds());
mMap.refresh();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值