Skip to content

Commit 3bfd639

Browse files
优化 iserver 数据服务、参数类doc 优化returnFeatureOnly 结果层级 review by luox
1 parent 850311d commit 3bfd639

18 files changed

+397
-289
lines changed

examples/leaflet/drawAndEditFeatures.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,6 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
303303
</div>
304304
<div class="edit-tips"><span data-i18n="resources.msg_clickToSelect"></span></div>
305305
</div>
306-
</div>
307306
<script type="text/javascript" include="jquery,bootstrap,widgets.alert,viewer" src="../js/include-web.js"></script>
308307
<script type="text/javascript">
309308
var status = 'ADD';

examples/mapboxgl/drawAndEditFeatures.html

Lines changed: 65 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
}
6767
.add-attribute-info,
6868
.edit-attribute-info {
69-
margin-bottom: 50px;
69+
/* margin-bottom: 50px; */
7070
}
7171

7272
.info-panel {
@@ -140,10 +140,9 @@
140140
margin-bottom: 10px;
141141
}
142142
.info-bottom {
143-
position: absolute;
144-
right: 20px;
145-
margin-top: 40px;
146-
bottom: 10px;
143+
margin-top: 20px;
144+
height: 55px;
145+
float: right;
147146
}
148147
.edit-tips {
149148
width: 300px;
@@ -257,7 +256,7 @@ <h5><span data-i18n="resources.text_targetDataset"></span></h5>
257256
</div>
258257
<h6><span class="line-element"></span><span data-i18n="resources.text_spacialInfo"></span></h6>
259258
<div class="space-info">
260-
<input class="input-element" type="text">
259+
<input class="input-element" type="text" disabled>
261260
<p class="desc-element"><span data-i18n="resources.msg_moveToMapDraw"></span></p>
262261
</div>
263262
<h6><span class="line-element"></span><span data-i18n="resources.text_attributeInfo"></span></h6>
@@ -273,7 +272,7 @@ <h6><span class="line-element"></span><span data-i18n="resources.text_attributeI
273272
<h4 class="into-title"><span data-i18n="resources.text_editFeature"></span><span class="dataset-info"><span data-i18n="resources.text_dataset"></span><span class="edit-dataset"></span></span></h4>
274273
<h6><span data-i18n="resources.text_spacialInfo"></span></h6>
275274
<div class="space-info">
276-
<input class="input-element" type="text">
275+
<input class="input-element" type="text" disabled>
277276
</div>
278277
<h6><span data-i18n="resources.text_attributeInfo"></span></h6>
279278
<div class="edit-attribute-info">
@@ -308,7 +307,6 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
308307
</div>
309308
<div class="edit-tips"><span data-i18n="resources.msg_clickToSelect"></span></div>
310309
</div>
311-
</div>
312310
<script type="text/javascript" include="jquery,bootstrap,widgets.alert,viewer" src="../js/include-web.js"></script>
313311
<script type="text/javascript">
314312
var status = 'ADD';
@@ -348,6 +346,7 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
348346
var container = document.getElementById('popup');
349347
var content = document.getElementById('popup-content');
350348
var isChanged = false;
349+
var preSelectId = null;
351350
map = new mapboxgl.Map({
352351
container: 'map',
353352
style: {
@@ -735,23 +734,35 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
735734
// 切换状态
736735
document.querySelector('#addFeature').addEventListener('click', function() {
737736
if (isChanged) {
738-
document.querySelector('.message').style.display = 'block';
737+
var message = document.querySelector('.message');
738+
message.style.display = 'block';
739+
setTimeout(() => {
740+
message.style.display = 'none';
741+
}, 3000);
739742
document.querySelector('.add-tips').style.display = 'inline-block';
740743
return;
741744
}
742745
switchPanel('add');
743746
});
744747
document.querySelector('#editFeature').addEventListener('click', function() {
745748
if (isChanged) {
746-
document.querySelector('.message').style.display = 'block';
749+
var message = document.querySelector('.message');
750+
message.style.display = 'block';
751+
setTimeout(() => {
752+
message.style.display = 'none';
753+
}, 3000);
747754
document.querySelector('.add-tips').style.display = 'inline-block';
748755
return;
749756
}
750757
switchPanel('edit');
751758
});
752759
document.querySelector('#deleteFeature').addEventListener('click', function() {
753760
if (isChanged) {
754-
document.querySelector('.message').style.display = 'block';
761+
var message = document.querySelector('.message');
762+
message.style.display = 'block';
763+
setTimeout(() => {
764+
message.style.display = 'none';
765+
}, 3000);
755766
document.querySelector('.add-tips').style.display = 'inline-block';
756767
return;
757768
}
@@ -896,9 +907,10 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
896907
if (!currentFeature.data.id) {
897908
datasetInfoList[currentDataset].uniqueId++;
898909
currentFeature.data.id = datasetInfoList[currentDataset].uniqueId;
899-
isUpdate = false;
900-
} else {
901-
isUpdate = true;
910+
};
911+
isUpadate = type !== 'add';
912+
if (!currentFeature.data.properties['SMUSERID']) {
913+
currentFeature.data.properties['SMUSERID'] = currentFeature.data.id;
902914
}
903915
if (type === 'edit') {
904916
var allFeature = draw.getAll();
@@ -911,10 +923,10 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
911923
});
912924
});
913925
};
926+
927+
914928

915929
commit(isUpdate);
916-
917-
// 切换到编辑
918930
switchPanel('edit', true);
919931
}
920932

@@ -964,7 +976,13 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
964976
});
965977
editFeaturesService.editFeatures(addFeatureParams, function (serviceResult) {
966978
if (serviceResult.result.succeed) {
967-
widgets.alert.showAlert(isUpdate ? '更新要素成功' : '新增要素成功', true);
979+
var addFeature = draw.getAll().features[0];
980+
if (addFeature) {
981+
addFeature.properties.datasetName = currentDataset;
982+
addFeature.properties.id = currentFeature.data.id;
983+
draw.add(addFeature);
984+
}
985+
widgets.alert.showAlert(isUpdate ? '更新要素成功' : '新增要素成功', true, 240);
968986
}
969987
});
970988
}
@@ -989,6 +1007,9 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
9891007
data.features.splice(idx, 1);
9901008
});
9911009
source.setData(data);
1010+
var deleteEle = document.querySelector('.delete-feature-list');
1011+
deleteEle.innerHTML = '';
1012+
deleteList = [];
9921013
widgets.alert.showAlert(resources.text_deleteSuccess, true);
9931014
}
9941015
});
@@ -998,9 +1019,20 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
9981019
clearInteraction();
9991020
map.on('click', function (e) {
10001021
var res = map.queryRenderedFeatures(e.point);
1022+
if (!res[0]) {
1023+
return;
1024+
}
10011025
if (status === 'EDIT') {
1026+
if (res[0] && ['mapbox-gl-draw-cold', 'mapbox-gl-draw-hot'].indexOf(res[0].source) === -1) {
1027+
if (preSelectId) {
1028+
draw.delete(preSelectId);
1029+
curEditOriginFeatures.forEach((feature, idx) => {
1030+
if (preSelectId === feature.id) {
1031+
curEditOriginFeatures.splice(idx, 1);
1032+
}
1033+
});
1034+
}
10021035
isChanged = true;
1003-
if (res[0] && !['mapbox-gl-draw-cold', 'mapbox-gl-draw-hot'].indexOf(res[0].source) > -1) {
10041036
var source = map.getSource(res[0].source);
10051037
var type = res[0].type;
10061038
var targetFeature = source._data.features.find(function(feature) {
@@ -1015,7 +1047,7 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
10151047
id: id,
10161048
properties: properties
10171049
};
1018-
var layer = map.getLayer(properties.datasetName);
1050+
var layer = map.getLayer(properties.datasetName || properties['user_datasetName']);
10191051
if (!layer) {
10201052
return;
10211053
}
@@ -1033,7 +1065,7 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
10331065
allIds = allIds.map(function(id) {
10341066
return id + '';
10351067
});
1036-
draw.add(editFeature);
1068+
preSelectId = draw.add(editFeature)[0];
10371069
var filters = ['match', ['get', 'SMID'], allIds, true, false];
10381070
map.setFilter(properties.datasetName, filters);
10391071
draw.changeMode(geometry.type === 'Point' ? 'simple_select' : 'direct_select', { featureId: id });
@@ -1050,15 +1082,21 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
10501082
} else if (status == 'DELETE') {
10511083
var feature = res[0];
10521084
if (feature) {
1053-
if (!deleteList[feature.properties.datasetName]) {
1054-
deleteList[feature.properties.datasetName] = []
1085+
var datasetName = feature.properties.datasetName;
1086+
var id = feature.id;
1087+
if (['mapbox-gl-draw-cold', 'mapbox-gl-draw-hot'].indexOf(feature.source) > -1) {
1088+
datasetName = feature.properties['user_datasetName'];
1089+
id = feature.properties['user_id'];
1090+
}
1091+
if (!deleteList[datasetName]) {
1092+
deleteList[datasetName] = []
10551093
}
1056-
if (deleteList[feature.properties.datasetName].indexOf(feature.id) > -1) {
1094+
if (deleteList[datasetName].indexOf(id) > -1) {
10571095
return;
10581096
}
1059-
deleteList[feature.properties.datasetName].push(feature.id);
1097+
deleteList[datasetName].push(id);
10601098
var deleteItem = document.createElement('div');
1061-
deleteItem.innerText = 'SMID: ' + feature.id + ' (' + feature.properties.datasetName + ')';
1099+
deleteItem.innerText = 'SMID: ' + id + ' (' + datasetName + ')';
10621100
var deleteEle = document.querySelector('.delete-feature-list');
10631101
deleteEle.appendChild(deleteItem);
10641102
}
@@ -1073,6 +1111,8 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
10731111
document.querySelector('.edit-feature-info').style.display = 'block';
10741112
document.querySelector('.edit-feature-info>.space-info>.input-element').value = JSON.stringify({ geometry: currentFeature.data.geometry});
10751113
renderEditAttribute('edit', currentFeature.data.properties);
1114+
updateChanged = true;
1115+
document.querySelector('.editSave').disabled = false;
10761116
}
10771117
});
10781118
map.on('draw.selectionchange', function() {

examples/maplibregl/drawAndEditFeatures.html

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,6 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
309309
</div>
310310
<div class="edit-tips"><span data-i18n="resources.msg_clickToSelect"></span></div>
311311
</div>
312-
</div>
313312
<script type="text/javascript" include="jquery,bootstrap,widgets.alert,viewer" src="../js/include-web.js"></script>
314313
<script type="text/javascript">
315314
var status = 'ADD';
@@ -736,23 +735,35 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
736735
// 切换状态
737736
document.querySelector('#addFeature').addEventListener('click', function() {
738737
if (isChanged) {
739-
document.querySelector('.message').style.display = 'block';
738+
var message = document.querySelector('.message');
739+
message.style.display = 'block';
740+
setTimeout(() => {
741+
message.style.display = 'none';
742+
}, 3000);
740743
document.querySelector('.add-tips').style.display = 'inline-block';
741744
return;
742745
}
743746
switchPanel('add');
744747
});
745748
document.querySelector('#editFeature').addEventListener('click', function() {
746749
if (isChanged) {
747-
document.querySelector('.message').style.display = 'block';
750+
var message = document.querySelector('.message');
751+
message.style.display = 'block';
752+
setTimeout(() => {
753+
message.style.display = 'none';
754+
}, 3000);
748755
document.querySelector('.add-tips').style.display = 'inline-block';
749756
return;
750757
}
751758
switchPanel('edit');
752759
});
753760
document.querySelector('#deleteFeature').addEventListener('click', function() {
754761
if (isChanged) {
755-
document.querySelector('.message').style.display = 'block';
762+
var message = document.querySelector('.message');
763+
message.style.display = 'block';
764+
setTimeout(() => {
765+
message.style.display = 'none';
766+
}, 3000);
756767
document.querySelector('.add-tips').style.display = 'inline-block';
757768
return;
758769
}
@@ -926,7 +937,7 @@ <h5><span data-i18n="resources.text_featureToDelete"></span>:</h5>
926937
// var datasetOrder = [].concat(datasetTypeClassify['Point'])
927938
// var datasetOrder = ['China_island', 'demo_line', 'Capitals'];
928939
datasetOrder.forEach(function(datasetName) {
929-
var getFeatureParams = new mapboxgl.supermap.GetFeaturesBySQLParameters({
940+
var getFeatureParams = new maplibregl.supermap.GetFeaturesBySQLParameters({
930941
queryParameter: {
931942
name: datasetName + "@" + dataSourceName,
932943
attributeFilter: 'SMID < 1000'

0 commit comments

Comments
 (0)