Skip to content

Commit 5409e5c

Browse files
committed
leaflet新增图层设置相关服务,海图物标信息服务,测量服务
1 parent 9783827 commit 5409e5c

File tree

12 files changed

+350
-37
lines changed

12 files changed

+350
-37
lines changed

build/deps.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,10 @@ var deps = {
8989
"./src/Leaflet/SuperMap/iServer/QueryService.js",
9090
"./src/Leaflet/SuperMap/iServer/ChartQueryService.js",
9191
"./src/Leaflet/SuperMap/iServer/TilesetsService.js",
92-
"./src/Leaflet/SuperMap/iServer/GetLayersInfoService.js"
92+
"./src/Leaflet/SuperMap/iServer/GetLayersInfoService.js",
93+
"./src/Leaflet/SuperMap/iServer/ChartFeatureInfoSpecsService.js",
94+
"./src/Leaflet/SuperMap/iServer/SetLayerService.js",
95+
"./src/Leaflet/SuperMap/iServer/MeasureService.js"
9396
]
9497
},
9598
"Data": {

examples/leaflet/01_measure.html

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>测量服务</title>
6+
<link rel="stylesheet" href="../css/bootstrap.min.css">
7+
<link rel="stylesheet" href="../../dist/SuperMapiClient9 for Leaflet.css">
8+
<script type="text/javascript" src="../../dist/SuperMapiClient9 for Leaflet.js"></script>
9+
<script type="text/javascript">
10+
var map, polyline, polygon, resultLayer,
11+
url = "http://support.supermap.com.cn:8090/iserver/services/map-world/rest/maps/World";
12+
function init() {
13+
map = L.map('map', {
14+
preferCanvas: true,
15+
crs: L.CRS.EPSG4326,
16+
center: [34, 108],
17+
maxZoom: 18,
18+
zoom: 3
19+
});
20+
L.supermap.tiledMapLayer(url, {projection: "4326"}).addTo(map);
21+
resultLayer = L.featureGroup().addTo(map);
22+
}
23+
24+
function measureService(type) {
25+
if (type === "distance") {
26+
clearLayer();
27+
polyline = L.polyline([[25, 102], [40, 116]], {color: "red"});
28+
var marker1 = L.marker([25, 102]), marker2 = L.marker([40, 116]);
29+
resultLayer.addLayer(polyline);
30+
resultLayer.addLayer(marker1);
31+
resultLayer.addLayer(marker2);
32+
L.supermap.measureService(url).measureDistance({
33+
geometry: polyline
34+
}).on("complete", function (serviceResult) {
35+
var content = "距离: " + serviceResult.result.distance + " 米";
36+
marker1.bindPopup(content).openPopup(marker1.getLatLng());
37+
});
38+
39+
} else {
40+
clearLayer();
41+
polygon = L.polygon([[24, 100], [40, 100], [40, 120], [24, 120], [24, 100]], {color: "red"});
42+
resultLayer.addLayer(polygon);
43+
L.supermap.measureService(url).measureArea({
44+
geometry: polygon
45+
}).on("complete", function (serviceResult) {
46+
var content = "面积: " + serviceResult.result.area + " 平方米";
47+
polygon.bindPopup(content).openPopup(polygon.getCenter());
48+
});
49+
}
50+
}
51+
function clearLayer() {
52+
if (resultLayer) {
53+
resultLayer.clearLayers();
54+
}
55+
}
56+
57+
</script>
58+
</head>
59+
<body onload="init()" style=" margin: 0;overflow: hidden;background: #fff;">
60+
<div id="toolbar" style=" position: relative;padding-top: 10px; padding-bottom: 10px;">
61+
<input type="button" class="btn btn-primary" value="测距离" onclick="measureService('distance')"/>
62+
<input type="button" class="btn btn-primary" value="测面积" onclick="measureService('area')"/>
63+
<input type="button" class="btn btn-primary" value="清除" onclick="clearLayer()"/>
64+
</div>
65+
<div id="map" style="margin:0 auto;position: relative; height: 510px;border: 1px solid #3473b7;"></div>
66+
</body>
67+
</html>

examples/leaflet/02_filedsService.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
L.supermap.tiledMapLayer(baseUrl,{projection:"4326"}).addTo(map);
2222
}
2323

24-
function mapService() {
24+
function fieldsService() {
2525
closeInfoWin();
2626
L.supermap.getFieldsService(url, {
2727
dataSourceName: "World",
@@ -43,7 +43,7 @@
4343
</head>
4444
<body onload="init()" style=" margin: 0;overflow: hidden;background: #fff;">
4545
<div id="toolbar" style=" position: relative;padding-top: 10px; padding-bottom: 10px;">
46-
<input type="button" class="btn btn-primary" value="获取字段信息" onclick="mapService()"/>
46+
<input type="button" class="btn btn-primary" value="获取字段信息" onclick="fieldsService()"/>
4747
<input type="button" class="btn btn-primary" value="清除结果" onclick="closeInfoWin()"/>
4848
</div>
4949
<div id="map" style="margin:0 auto;position: relative; height: 510px;border: 1px solid #3473b7;"></div>
File renamed without changes.

examples/leaflet/examples.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ <h3>Leaflet范例分类</h3>
6868
<div class="span10">
6969
<ul class='nav nav-pills'>
7070
<li><a href='javascript:void(0)' target='_self' data-name='01_mapService'>地图信息</a></li>
71+
<li><a href='javascript:void(0)' target='_self' data-name='01_measure'>测量</a></li>
7172
</ul>
7273
</div>
7374
</div>
@@ -127,10 +128,10 @@ <h3>Leaflet范例分类</h3>
127128
<li><a href='javascript:void(0)' target='_self' data-name='02_getFeatureByBounds'>范围查询</a></li>
128129
<li><a href='javascript:void(0)' target='_self' data-name='02_getFeatureByGeometry'>几何查询</a></li>
129130
<li><a href='javascript:void(0)' target='_self' data-name='02_getFeatureByBuffer'>缓冲区查询</a></li>
130-
<li><a href='javascript:void(0)' target='_self' data-name='02_getGridCellInfosService'>栅格查询</a></li>
131+
<li><a href='javascript:void(0)' target='_self' data-name='02_getGridCellInfos'>栅格查询</a></li>
131132
<li><a href='javascript:void(0)' target='_self' data-name='02_filedsService'>字段信息</a></li>
132133
<li><a href='javascript:void(0)' target='_self' data-name='02_filedStatistics'>字段查询统计</a></li>
133-
<li><a href='javascript:void(0)' target='_self' data-name='02_EditFeatures'>地物编辑</a></li>
134+
<li><a href='javascript:void(0)' target='_self' data-name='02_editFeatures'>地物编辑</a></li>
134135
</ul>
135136
</div>
136137
</div>

src/Core/iServer/MeasureService.js

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,27 @@
1313
require('./CoreServiceBase');
1414

1515
SuperMap.REST.MeasureService = SuperMap.Class(SuperMap.CoreServiceBase, {
16-
17-
/**
16+
17+
/**
1818
* APIProperty: measureMode
1919
* {<SuperMap.REST.MeasureMode>} 量算模式,包括距离量算模式和面积量算模式。默认值为:SuperMap.REST.MeasureMode.DISTANCE 。
2020
*/
2121
measureMode: SuperMap.REST.MeasureMode.DISTANCE,
22-
22+
2323
/**
2424
* Constructor: SuperMap.REST.MeasureService
2525
* 量算服务类构造函数。
2626
*
2727
* 例如:
28-
* (start code)
28+
* (start code)
2929
* var myMeasuerService = new SuperMap.REST.MeasureService(url, {
3030
* measureMode: SuperMap.REST.MeasureMode.DISTANCE,
3131
* eventListeners:{
3232
* "processCompleted": measureCompleted
3333
* }
3434
* });
35-
* (end)
36-
*
35+
* (end)
36+
*
3737
* Parameters:
3838
* url - {String} 服务访问的地址。如:http://localhost:8090/iserver/services/map-world/rest/maps/World+Map 。
3939
* options - {Object} 参数。
@@ -42,32 +42,32 @@ SuperMap.REST.MeasureService = SuperMap.Class(SuperMap.CoreServiceBase, {
4242
* eventListeners - {Object} 需要被注册的监听器对象。
4343
* measureMode - {<SuperMap.REST.MeasureMode>} 量算模式,包括距离量算模式和面积量算模式。
4444
*/
45-
initialize: function(url, options) {
45+
initialize: function (url, options) {
4646
SuperMap.CoreServiceBase.prototype.initialize.apply(this, arguments);
4747
if (options) {
4848
SuperMap.Util.extend(this, options);
4949
}
5050
},
51-
51+
5252
/**
5353
* APIMethod: destroy
54-
* 释放资源,将引用的资源属性置空。
54+
* 释放资源,将引用的资源属性置空。
5555
*/
56-
destroy: function() {
56+
destroy: function () {
5757
SuperMap.CoreServiceBase.prototype.destroy.apply(this, arguments);
5858
var me = this;
5959
me.measureMode = null;
6060
},
61-
61+
6262
/**
6363
* APIMethod: processAsync
6464
* 负责将客户端的量算参数传递到服务端。
6565
*
6666
* Parameters:
6767
* params - {<SuperMap.REST.MeasureParameters>} 量算参数。
6868
*/
69-
processAsync: function(params) {
70-
if(!params){
69+
processAsync: function (params) {
70+
if (!params) {
7171
return;
7272
}
7373
var me = this,
@@ -78,21 +78,21 @@ SuperMap.REST.MeasureService = SuperMap.Class(SuperMap.CoreServiceBase, {
7878
end = null;
7979
if (!geometry) {
8080
return;
81-
}
81+
}
8282
end = me.url.substr(me.url.length - 1, 1);
8383
if (me.measureMode === SuperMap.REST.MeasureMode.AREA) {
8484
if (me.isInTheSameDomain) {
85-
me.url += ((end === "/") ? "area.json?": "/area.json?");
85+
me.url += ((end === "/") ? "area.json?" : "/area.json?");
8686
}
8787
else {
88-
me.url += ((end === "/") ? "area.jsonp?": "/area.jsonp?");
88+
me.url += ((end === "/") ? "area.jsonp?" : "/area.jsonp?");
8989
}
9090
} else {
9191
if (me.isInTheSameDomain) {
92-
me.url += ((end === "/") ? "distance.json?": "/distance.json?");
92+
me.url += ((end === "/") ? "distance.json?" : "/distance.json?");
9393
}
9494
else {
95-
me.url += ((end === "/") ? "distance.jsonp?": "/distance.jsonp?");
95+
me.url += ((end === "/") ? "distance.jsonp?" : "/distance.jsonp?");
9696
}
9797
}
9898
var serverGeometry = SuperMap.REST.ServerGeometry.fromGeometry(geometry);
@@ -102,34 +102,31 @@ SuperMap.REST.MeasureService = SuperMap.Class(SuperMap.CoreServiceBase, {
102102
pointsCount = serverGeometry.parts[0];
103103
point2ds = serverGeometry.points.splice(0, pointsCount);
104104

105-
var prjCoordSysTemp,prjCodeTemp,paramsTemp;
106-
if(params.prjCoordSys){
107-
if(typeof (params.prjCoordSys) === "object")
108-
{
109-
prjCodeTemp = params.prjCoordSys.projCode;
110-
prjCoordSysTemp = '{"epsgCode"'+prjCodeTemp.substring(prjCodeTemp.indexOf(":"),prjCodeTemp.length) +"}";
105+
var prjCoordSysTemp, prjCodeTemp, paramsTemp;
106+
if (params.prjCoordSys) {
107+
if (typeof (params.prjCoordSys) === "object") {
108+
prjCodeTemp = params.prjCoordSys.projCode;
109+
prjCoordSysTemp = '{"epsgCode"' + prjCodeTemp.substring(prjCodeTemp.indexOf(":"), prjCodeTemp.length) + "}";
111110
}
112-
else if(typeof (params.prjCoordSys) === "string")
113-
{
114-
prjCoordSysTemp = '{"epsgCode"'+params.prjCoordSys.substring(params.prjCoordSys.indexOf(":"),params.prjCoordSys.length) +"}";
111+
else if (typeof (params.prjCoordSys) === "string") {
112+
prjCoordSysTemp = '{"epsgCode"' + params.prjCoordSys.substring(params.prjCoordSys.indexOf(":"), params.prjCoordSys.length) + "}";
115113
}
116-
paramsTemp = {"point2Ds": SuperMap.Util.toJSON(point2ds), "unit": params.unit, "prjCoordSys":prjCoordSysTemp};
114+
paramsTemp = {"point2Ds": SuperMap.Util.toJSON(point2ds), "unit": params.unit, "prjCoordSys": prjCoordSysTemp};
117115
}
118-
else
119-
{
116+
else {
120117
paramsTemp = {"point2Ds": SuperMap.Util.toJSON(point2ds), "unit": params.unit};
121118
}
122119

123120
me.request({
124121
method: "GET",
125-
params:paramsTemp,
122+
params: paramsTemp,
126123
scope: me,
127124
success: me.serviceProcessCompleted,
128125
failure: me.serviceProcessFailed
129126
});
130127

131128
},
132-
129+
133130
CLASS_NAME: "SuperMap.REST.MeasureService"
134131
});
135132

src/Core/iServer/SetLayerInfoService.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ SuperMap.REST.SetLayerInfoService = SuperMap.Class(SuperMap.CoreServiceBase, {
3737
if (options) {
3838
SuperMap.Util.extend(this, options);
3939
}
40+
this.resourceID = options.resourceID;
4041
},
4142

4243
/**

src/Core/iServer/SetLayersInfoService.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ SuperMap.REST.SetLayersInfoService = SuperMap.Class(SuperMap.CoreServiceBase, {
4646
if (options) {
4747
SuperMap.Util.extend(this, options);
4848
}
49+
this.resourceID = options.resourceID;
50+
this.isTempLayers = options.isTempLayers;
4951
},
5052

5153
/**
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* Class: ChartFeatureInfoSpecsService
3+
* 海图物标信息服务
4+
* 用法:
5+
* L.superMap.chartFeatureInfoSpecsService(url)
6+
* .getChartFeatureInfo()
7+
* .on("complete",function(result){
8+
* //doSomething
9+
* }).on("failed",function(result){
10+
* //doSomething
11+
* });
12+
*/
13+
require('./ServiceBase');
14+
require('../../../Core/iServer/ChartFeatureInfoSpecsService');
15+
16+
ChartFeatureInfoSpecsService = ServiceBase.extend({
17+
18+
initialize: function (url, options) {
19+
ServiceBase.prototype.initialize.call(this, url, options);
20+
},
21+
22+
getChartFeatureInfo: function () {
23+
var me = this;
24+
var chartFeatureInfoSpecsService = SuperMap.REST.ChartFeatureInfoSpecsService(me.options.url, {
25+
eventListeners: {
26+
scope: me,
27+
processCompleted: me.processCompleted,
28+
processFailed: me.processFailed
29+
}
30+
});
31+
chartFeatureInfoSpecsService.processAsync();
32+
return me;
33+
}
34+
});
35+
36+
L.supermap.chartFeatureInfoSpecsService = function (url, options) {
37+
return new ChartFeatureInfoSpecsService(url, options);
38+
};
39+
40+
module.exports = L.supermap.chartFeatureInfoSpecsService;

0 commit comments

Comments
 (0)