一、没有封装
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1、加载ol库 -->
<script src="../lib/include-openlayers-local.js"></script>
<script src="../js/Gaode.js"></script>
</head>
<body>
<!-- 2、创建地图容器 -->
<button onclick="addPoint()">添加</button>
<div id="map_container">
</div>
<!-- 3、实例化对象 -->
<script>
const docLayer = new Zondy.Map.Doc('', 'city', {
ip: 'localhost',
port: 6163
})
const map = new ol.Map({
target: 'map_container',
layers: [gaode, docLayer],
view: new ol.View({
projection: 'EPSG:4326',
center: [114, 30],
zoom: 4
})
})
/* 添加一个点到数据库 */
function addPoint() {
/* 2.1构建几何信息 */
/* 创建一个点形状,描述点形状的几何信息 */
var gpoint = new Zondy.Object.GPoint(120.52, 30.40)
/* 设置当前点要素的几何信息 */
var fGeom = new Zondy.Object.FeatureGeometry({
PntGeom: [gpoint]
})
/* 2.2 设置样式信息 */
var pointInfo = new Zondy.Object.CPointInfo({
Angle: 0,
Color: 2, //子图的颜色
Space: 0,
SymHeight: 5, //点的高度
SymID: 31,
SymWidth: 5 //点的宽度
})
/* 设置当点要素的图形参数信息 */
var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({
InfoType: 1, //点
PntInfo: pointInfo
})
/* 2.3 设置属性信息 */
/* 设置添加点要素的属性信息 */
var attValue = ['上海', '1005']
/* 2.4 构建要素对象 */
var feature = new Zondy.Object.Feature({
fGeom: fGeom, //坐标--几何信息
GraphicInfo: webGraphicInfo, //样式信息
AttValue: attValue //属性
})
/* 设置要素为点要素
点 -->1
线 -->2
面 -->3
*/
feature.setFType(1)
/* 2.5 设置要素集 */
//创建一个要素数据集
var featureSet = new Zondy.Object.FeatureSet()
/* 设置属性结构 */
var cAttStruct = new Zondy.Object.CAttStruct({
FldName: ['name', 'id'], //属性的字段名
FldNumber: 2, //属性的个数
FldType: ['string', 'string'] //属性的类型
})
featureSet.AttStruct = cAttStruct
/* 添加要素到要素数据集 */
featureSet.addFeature(feature)
/* 2.6 调用编辑服务接口 */
/*
创建一个编辑服务类
第一个参数:服务的名称 第二参数:图层的名称
*/
var editService = new Zondy.Service.EditDocFeature('city', 0, {
ip: 'localhost',
port: '6163' //访问IGServer的端口号, .net为6163,Java为8089
})
//执行添加点要素功能
editService.add(featureSet, onPntSuccess)
}
function onPntSuccess(data) {
if (data.succeed) {
alert('添加成功')
docLayer.refresh(); //重新加载地图文档
} else {
alert('添加点要素失败')
}
}
</script>
</body>
</html>
二、封装
分析变化的参数
- 1、经纬度
- 2、图层名称
- 3、属性参数
- 4、服务信息
```javascript
const POINT_STYLE = {
Angle: 0,
Color: 11,
Space: 0,
SymHeight: 10,
SymID: 31,
SymWidth: 10
}
/**
- @param {array} position 坐标
- @param {string} layer 图层的名称
- @param {array} attr [{key:”name”,value:”武汉”,type:”string”}]
- @param {object} service {name,layerId)
*/
function addPoint({
position,
layer,
attr,
service
}) {
//1-1、设置几何信息
var gpoint = new Zondy.Object.GPoint(position[0], position[1]);
var fGeom = new Zondy.Object.FeatureGeometry({
}); //1-2、设置样式信息 //描述点要素的符号参数信息 var pointInfo = new Zondy.Object.CPointInfo(POINT_STYLE); //设置当前点要素的图形参数信息 var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({PntGeom: [gpoint]
}); //1-3、属性信息 //设置添加点要素的属性信息 var attValue = attr.map(item => item.value); / 2、构建点要素 / //创建一个要素 var feature = new Zondy.Object.Feature({InfoType: 1,
PntInfo: pointInfo
}); //设置要素为点要素 feature.setFType(1); / 3、创建要素集 / //创建一个要素数据集 var featureSet = new Zondy.Object.FeatureSet(); //设置属性结构 var cAttStruct = new Zondy.Object.CAttStruct({fGeom: fGeom,
GraphicInfo: webGraphicInfo,
AttValue: attValue
}); featureSet.AttStruct = cAttStruct; //添加要素到要素数据集 featureSet.addFeature(feature); / 4、调用服务 / //创建一个编辑服务类 var editService = new Zondy.Service.EditDocFeature(service.name, service.layerId, {FldName: attr.map(item => item.key),
FldNumber: 1,
FldType: attr.map(item => item.type)
}); editService.add(featureSet, onPntSuccess(layer));ip: "localhost",
port: 6163
} //添加点要素回调函数 function onPntSuccess(layer) { return function (result) { if (result) { alert(“添加点要素成功!”); layer.refresh(); } else { alert(“添加点要素失败!”); } } }
```html
<script>
var map = new ol.Map({
target:"map_container",
layers:[gaodeMapLayer],
view:new ol.View({
projection:'EPSG:4326',
center:[114.30,30.50],
zoom:4
})
})
var docLayer = new Zondy.Map.Doc('',"city_area",{
ip:"localhost",
port:6163
})
map.addLayer(docLayer)
/**
*
* @param {array} position 坐标
* @param {array} attr [{key:"name",value:"武汉",type:"string"}]
* @param {object} service {name,layerId,layer)
*/
map.on('click',function(e){
var position = e.coordinate;
var attr = [{key:"name",value:"苏州",type:"string"}]
var service = { name:"city_area",layerId:2}
addPoint({
position,
layer:docLayer,
attr,
service
})
})
</script>