mapIndex.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. var map, marker = null, editableLayers = null, url = iServerMap,dataUrl=iServerJieDaoSheQuData;;//初始化基本参数
  2. var workspace_qk=iServerJilinshengAndQikaiMap;//省矢量及区影像,固定加载。
  3. var workspace_jdsq=iServerJieDaoSheQuMap;//街道社区的地图服务路径,固定加载。
  4. //样例:省矢量图,当做经开矢量图使用
  5. var map_jilinShiLiang = L.supermap.tiledMapLayer(workspace_qk+'/吉林省矢量地图 ', {
  6. noWrap: true
  7. });
  8. //样例:经开影像图
  9. var map_qikaiYingXiang = L.supermap.tiledMapLayer( workspace_qk+'/经开影像 ', {
  10. noWrap: true
  11. });
  12. //样例:东风街道
  13. var map_dfjd = L.supermap.tiledMapLayer( workspace_jdsq+'/dongfengjiedao', {
  14. noWrap: true
  15. });
  16. //样例:东风街道-创业社区
  17. var map_dfjd_chuangye = L.supermap.tiledMapLayer( workspace_jdsq+'/dongfengchuangye', {
  18. noWrap: true
  19. });
  20. //样例:东风街道-杨柳社区
  21. var map_dfjd_yangliu = L.supermap.tiledMapLayer( workspace_jdsq+'/dongfengyangliu', {
  22. noWrap: true
  23. });
  24. //东风昆仑社区
  25. var map_dfjd_kunlun = L.supermap.tiledMapLayer( workspace_jdsq+'/dongfengl]kunlun', {
  26. noWrap: true
  27. });
  28. var mapPoint;////中心坐标点,区、街道、社区各个中心点不一样,灵活获取及配置,样例为东风街道中心坐标点
  29. var layersList=[];//配置需要加载的图层
  30. layersList.push(map_jilinShiLiang);//固定,省矢量图
  31. var zoom=0;//全局缩放比例,区:12,街道14
  32. function initMap(mapPoint,layersList,zoom){
  33. clear();
  34. // 默认加载全区矢量+影像+人房户地图+四个街道范围图,无社区建筑物图
  35. map = L.map('map', {
  36. preferCanvas: true,
  37. center: mapPoint,//初始化后中心坐标点,暂时不知道
  38. zoom: zoom,
  39. crs: L.CRS.EPSG4326,
  40. // crs: L.CRS.EPSG3857,
  41. zoomControl: true,
  42. doubleClickZoom: false,
  43. /*layers: [map_jilinShiLiang,map_qikaiYingXiang,map_dfjd,map_dfjd_chuangye,map_dfjd_yangliu]*/
  44. layers: layersList
  45. }).on({"dblclick": callbackFunction})/*.on('contextmenu',function(e){
  46. fun();
  47. })*/;
  48. editableLayers = new L.FeatureGroup().addTo(map);
  49. var options = {
  50. position: 'topleft',
  51. draw: {
  52. polyline: null,
  53. polygon: {},
  54. circlemarker: null,
  55. circle: null,
  56. rectangle: {},
  57. marker: null,
  58. remove: null
  59. }
  60. };
  61. var drawControl = new L.Control.Draw(options);
  62. map.addControl(drawControl);
  63. map.on(L.Draw.Event.CREATED, function (e) {
  64. var type = e.layerType,
  65. layer = e.layer;
  66. editableLayers.clearLayers();
  67. editableLayers.addLayer(layer);
  68. switch (type) {
  69. case 'rectangle':
  70. case 'polygon':
  71. kuangXuan(layer._latlngs);
  72. break;
  73. }
  74. });
  75. }
  76. $(function() {
  77. initAllMap();
  78. });
  79. function initAllMap(){
  80. // 默认加载全省矢量+汽开影像+人房户地图+四个街道范围图
  81. if(perFlag=="zhzx"){
  82. layersList.push(map_qikaiYingXiang);//固定,汽开影像
  83. //指挥中心或管理员登录,查看全区范围轮廓图
  84. mapPoint=iServerqiKaiQuMapCenterPoint;//全区中心点
  85. zoom=12;
  86. layersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/qikaiquanqu', { noWrap: true }));//汽开全区
  87. // layersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/dongfengjiedao', { noWrap: true }));//东风街道
  88. // layersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/qianchengjiedao', { noWrap: true }));//前程街道
  89. // layersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/jinchengjiedao', { noWrap: true }));//锦程街道
  90. // layersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/fuminjiedao', { noWrap: true }));//富民街道
  91. }else if(perFlag=="jd"){
  92. layersList.push(map_qikaiYingXiang);//固定,汽开影像
  93. //街道登录,仅查看本街道范围轮廓图
  94. layersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/'+layerId, { noWrap: true }));//加载本街道范围轮廓图
  95. mapPoint=getSuperMapCenterPoint(centerpointLat+","+centerpointLon);//本街道中心点
  96. zoom=14;
  97. /*layersList.push(map_dfjd_chuangye);//测试样例*/
  98. //街道登录后,查询本街道下所有社区建筑图,涉及图层:矢量图,影像图,街道图(layerId),本街道所有社区图
  99. //加载本街道下所有社区建筑图
  100. }
  101. initMap(mapPoint,layersList,zoom);
  102. }
  103. var resultData = [];
  104. function callbackFunction(e) {
  105. var lat = e.latlng.lat;
  106. var lng = e.latlng.lng;
  107. var polygon = L.circle([lat, lng], {radius: 10});//根据获取的坐标生成面,面直径为10,根据实际业务变动范围大小
  108. // var geometry = L.Util.transform(polygon, L.CRS.EPSG4326, L.CRS.EPSG3857);//坐标转换,此项目不涉及84和2000坐标转换
  109. var geometryParam = new SuperMap.GetFeaturesByGeometryParameters({
  110. //如果涉及到需要加载多个数据源及数据集,格式为datasetNames: ["building:东风创业","building:东风创业","building:东风创业"],如区指挥中心或街道指挥中心登录,则需加载多个数据源和数据集
  111. /*datasetNames: [datasourceName + ":" + datasetName],//["building:东风新立"]加载数据源和数据集*/
  112. datasetNames: datasource_datasetNames,//["building:东风创业"]
  113. geometry: polygon,//加载坐标
  114. spatialQueryMode: "INTERSECT"
  115. });
  116. L.supermap
  117. .featureService(dataUrl)
  118. .getFeaturesByGeometry(geometryParam, function (serviceResult) {
  119. console.log(serviceResult);
  120. if (!serviceResult.result) {
  121. return;
  122. }
  123. if (serviceResult.result.features.features.length === 0) {
  124. return;
  125. }
  126. if (marker) {
  127. marker.setLatLng(e.latlng);
  128. } else {
  129. marker = L.marker(e.latlng).addTo(map);
  130. }
  131. L.geoJSON(serviceResult.result.features.features, {
  132. onEachFeature: function (feature, layer) {
  133. /*marker.bindPopup("数据集名称:"+feature.properties.NAME + ', 建筑物标识:' + feature.properties.SMID).openPopup(marker.getLatLng());*/
  134. //此处根据数据集名称及建筑物标识,去后台查询,然后开展业务
  135. //此处根据resultDataSMID和resultDataName这两个集合的值,去后台进行业务查询
  136. $.modal.open("人房户单选", prefix + "/rfhSingle/"+feature.properties.NAME+"/"+feature.properties.SMID+"/NULL",1200, 750);
  137. }
  138. });
  139. });
  140. }
  141. var isYxt = true;//默认选中影像图,加载影像
  142. function getYxt(){
  143. isYxt = true;
  144. reloadData();
  145. /*map.remove();//移除地图对象,
  146. if(!isRfh){//判断,如果当前是事件地图,layersList里, 只存 全区的矢量、影像、轮廓 不存建筑
  147. layersList=[];
  148. layersList.push(map_jilinShiLiang);//固定,汽开矢量
  149. layersList.push(map_qikaiYingXiang);//固定,汽开影像
  150. if($("#jdId").val() == -1){//汽开全区轮廓图
  151. layersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/qikaiquanqu', { noWrap: true }));//汽开全区
  152. }else {//选中具体街道、社区轮廓图
  153. for (var i = 0; i < map_jiedaoList.length; i++) {
  154. layersList.push(L.supermap.tiledMapLayer(workspace_jdsq + '/' + map_jiedaoList[i].layerId, {noWrap: true}));//加载本街道范围轮廓图
  155. }
  156. /!*for (var i = 0; i < map_shequList.length; i++) {//选择具体街道时加载街道下所有社区数据
  157. if (map_shequList[i].layerId != null && map_shequList[i].layerId != "") {
  158. layersList.push(L.supermap.tiledMapLayer(workspace_jdsq + '/' + map_shequList[i].layerId, {noWrap: true}));//加载本街道下所有社区建筑图
  159. datasource_datasetNames.push(map_shequList[i].datasourceName + ":" + map_shequList[i].datasetName);//["building:东风创业","building:东风创业","building:东风创业"],
  160. }
  161. }*!/
  162. }
  163. initMap(mapPoint,layersList,zoom);//重新初始化地图对象
  164. //调用获取事件并落点的方法
  165. $.eventPoint.init({
  166. deptId: $('#sqId').val()==-1?$('#jdId').val()==-1?0:$('#jdId').val():$('#sqId').val(),
  167. year:$("#year").val()
  168. });
  169. }else {//人房户 有矢量、影像、轮廓 并且 没有事件落点
  170. layersList=[];
  171. layersList.push(map_jilinShiLiang);//固定,汽开矢量
  172. layersList.push(map_qikaiYingXiang);//固定,汽开影像
  173. if($("#jdId").val() == -1){//汽开全区轮廓图
  174. layersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/qikaiquanqu', { noWrap: true }));//汽开全区
  175. }else {//选中具体街道、社区轮廓图
  176. for (var i = 0; i < map_jiedaoList.length; i++) {
  177. layersList.push(L.supermap.tiledMapLayer(workspace_jdsq + '/' + map_jiedaoList[i].layerId, {noWrap: true}));//加载本街道范围轮廓图
  178. }
  179. for (var i = 0; i < map_shequList.length; i++) {//选择具体街道时加载街道下所有社区数据
  180. if (map_shequList[i].layerId != null && map_shequList[i].layerId != "") {
  181. layersList.push(L.supermap.tiledMapLayer(workspace_jdsq + '/' + map_shequList[i].layerId, {noWrap: true}));//加载本街道下所有社区建筑图
  182. datasource_datasetNames.push(map_shequList[i].datasourceName + ":" + map_shequList[i].datasetName);//["building:东风创业","building:东风创业","building:东风创业"],
  183. }
  184. }
  185. }
  186. initMap(mapPoint,layersList,zoom);//重新初始化地图对象
  187. }*/
  188. }
  189. function getSlt(){
  190. isYxt = false;
  191. reloadData();
  192. /*map.remove();//移除地图对象,
  193. var sltLayersList=[];
  194. sltLayersList.push(map_jilinShiLiang);
  195. initMap(mapPoint,sltLayersList,zoom);//重新初始化地图对象,只加载矢量,保持原有的中心点及缩放等级。
  196. if(!isRfh) {//事件 //调用获取事件并落点的方法
  197. $.eventPoint.init({
  198. deptId: $('#sqId').val()==-1?$('#jdId').val()==-1?0:$('#jdId').val():$('#sqId').val(),
  199. year:$("#year").val()
  200. });
  201. }*/
  202. }
  203. var isRfh = true;//默认选中人房户,显示轮廓图
  204. function getPersonMap(){//点击人房户按钮
  205. isRfh = true;//人房户显示轮廓图
  206. reloadData();
  207. /*map.remove();//移除地图对象,
  208. var efhMapLayersList=[];
  209. var efhMapPoint;
  210. efhMapLayersList.push(map_jilinShiLiang);//吉林矢量
  211. if(isYxt) {//影像图
  212. efhMapLayersList.push(map_qikaiYingXiang);//汽开影像
  213. }
  214. if(perFlag=="zhzx"){
  215. if($("#jdId").val() == -1){
  216. //指挥中心或管理员登录,查看全区范围轮廓图
  217. efhMapPoint=iServerqiKaiQuMapCenterPoint;//全区中心点
  218. if(isYxt) {//影像图
  219. efhMapLayersList.push(L.supermap.tiledMapLayer(workspace_jdsq+'/qikaiquanqu', { noWrap: true }));//汽开全区
  220. }
  221. //efhMapLayersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/dongfengjiedao', { noWrap: true }));//东风街道
  222. //前程街道
  223. //锦程街道
  224. //富民街道
  225. zoom=12;
  226. }else {//选择街道、社区后加载具体街道中心点、轮廓图
  227. if(isYxt) {//影像图
  228. for (var i = 0; i < map_jiedaoList.length; i++) {
  229. efhMapLayersList.push(L.supermap.tiledMapLayer(workspace_jdsq + '/' + map_jiedaoList[i].layerId, {noWrap: true}));//加载本街道范围轮廓图
  230. }
  231. for (var i = 0; i < map_shequList.length; i++) {//选择具体街道时加载街道下所有社区数据
  232. if (map_shequList[i].layerId != null && map_shequList[i].layerId != "") {
  233. efhMapLayersList.push(L.supermap.tiledMapLayer(workspace_jdsq + '/' + map_shequList[i].layerId, {noWrap: true}));//加载本街道下所有社区建筑图
  234. datasource_datasetNames.push(map_shequList[i].datasourceName + ":" + map_shequList[i].datasetName);//["building:东风创业","building:东风创业","building:东风创业"],
  235. }
  236. }
  237. }
  238. if ($("#sqId").val() != -1 && map_shequList[0].centerpointLat != null && map_shequList[0].centerpointLat != "" && map_shequList[0].centerpointLon != null && map_shequList[0].centerpointLon != "") {
  239. zoom = 16;
  240. efhMapPoint = getSuperMapCenterPoint(map_shequList[0].centerpointLat + "," + map_shequList[0].centerpointLon);//本社区中心点
  241. } else {
  242. zoom = 14;
  243. efhMapPoint = getSuperMapCenterPoint(map_jiedaoList[0].centerpointLat + "," + map_jiedaoList[0].centerpointLon);//本街道中心点
  244. }
  245. }
  246. }else if(perFlag=="jd"){
  247. //街道登录,仅查看本街道范围轮廓图
  248. if(isYxt) {//影像图
  249. efhMapLayersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/'+layerId, { noWrap: true }));//加载本街道范围轮廓图
  250. }
  251. efhMapPoint=getSuperMapCenterPoint(centerpointLat+","+centerpointLon);//本街道中心点
  252. zoom=14;
  253. }
  254. initMap(efhMapPoint,efhMapLayersList,zoom);//重新初始化地图对象*/
  255. }
  256. function getEventMap(){//点击事件按钮
  257. isRfh = false;//事件不显示轮廓图
  258. reloadData();
  259. /*map.remove();//移除地图对象,
  260. var eventMapLayersList=[];
  261. var eventMapPoint;
  262. eventMapLayersList.push(map_jilinShiLiang);
  263. if(isYxt){//加载影像图
  264. eventMapLayersList.push(map_qikaiYingXiang);
  265. if($("#jdId").val() == -1){//汽开全区轮廓图
  266. eventMapLayersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/qikaiquanqu', { noWrap: true }));//汽开全区
  267. }else {//选中具体街道、社区轮廓图
  268. for (var i = 0; i < map_jiedaoList.length; i++) {
  269. eventMapLayersList.push(L.supermap.tiledMapLayer(workspace_jdsq + '/' + map_jiedaoList[i].layerId, {noWrap: true}));//加载本街道范围轮廓图
  270. }
  271. /!*for (var i = 0; i < map_shequList.length; i++) {//选择具体街道时加载街道下所有社区数据
  272. if (map_shequList[i].layerId != null && map_shequList[i].layerId != "") {
  273. layersList.push(L.supermap.tiledMapLayer(workspace_jdsq + '/' + map_shequList[i].layerId, {noWrap: true}));//加载本街道下所有社区建筑图
  274. datasource_datasetNames.push(map_shequList[i].datasourceName + ":" + map_shequList[i].datasetName);//["building:东风创业","building:东风创业","building:东风创业"],
  275. }
  276. }*!/
  277. }
  278. }
  279. if(perFlag=="zhzx"){
  280. if($("#jdId").val() == -1){
  281. //指挥中心或管理员登录,查看全区范围轮廓图
  282. eventMapPoint=iServerqiKaiQuMapCenterPoint;//全区中心点
  283. //////eventMapLayersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/dongfengjiedao', { noWrap: true }));//东风街道
  284. //前程街道
  285. //锦程街道
  286. //富民街道
  287. zoom=12;
  288. }else {//选择街道、社区后加载具体街道中心点
  289. if ($("#sqId").val() != -1 && map_shequList[0].centerpointLat != null && map_shequList[0].centerpointLat != "" && map_shequList[0].centerpointLon != null && map_shequList[0].centerpointLon != "") {
  290. zoom = 16;
  291. eventMapPoint = getSuperMapCenterPoint(map_shequList[0].centerpointLat + "," + map_shequList[0].centerpointLon);//本社区中心点
  292. } else {
  293. zoom = 14;
  294. eventMapPoint = getSuperMapCenterPoint(map_jiedaoList[0].centerpointLat + "," + map_jiedaoList[0].centerpointLon);//本街道中心点
  295. }
  296. }
  297. }else if(perFlag=="jd"){
  298. //街道登录,仅查看本街道范围轮廓图
  299. //////eventMapLayersList.push(L.supermap.tiledMapLayer( workspace_jdsq+'/'+layerId, { noWrap: true }));//加载本街道范围轮廓图
  300. eventMapPoint=getSuperMapCenterPoint(centerpointLat+","+centerpointLon);//本街道中心点
  301. zoom=14;
  302. }
  303. initMap(eventMapPoint,eventMapLayersList,zoom);
  304. $.eventPoint.init({
  305. deptId: $('#sqId').val()==-1?$('#jdId').val()==-1?0:$('#jdId').val():$('#sqId').val(),
  306. year:$("#year").val()
  307. });*/
  308. }
  309. function kuangXuan(arr) {
  310. var polygon = L.polygon([arr]);
  311. getBuildingList(polygon);
  312. }
  313. function clear() {
  314. if (editableLayers != null) {
  315. editableLayers.clearLayers();
  316. }
  317. if (marker != null) {
  318. marker.remove();
  319. marker = null;
  320. }
  321. }
  322. function getBuildingList(geometry){
  323. resultData=[];
  324. if(datasource_datasetNames==null||datasource_datasetNames==""||datasource_datasetNames=="undefined"){
  325. $.modal.alertWarning("未获取到建筑物,请重新选取!");
  326. return;
  327. }
  328. var geometryParam = new SuperMap.GetFeaturesByGeometryParameters({
  329. //如果涉及到需要加载多个数据源及数据集,格式为datasetNames: ["building:东风创业","building:东风创业","building:东风创业"],如区指挥中心或街道指挥中心登录,则需加载多个数据源和数据集
  330. /*datasetNames: [datasourceName + ":" + datasetName],//["building:东风新立"]加载数据源和数据集*/
  331. datasetNames: datasource_datasetNames,//["building:东风创业"],//
  332. geometry: geometry,
  333. toIndex: -1,
  334. // maxFeatures: 20,
  335. spatialQueryMode: "INTERSECT"
  336. });
  337. L.supermap
  338. .featureService(dataUrl)
  339. .getFeaturesByGeometry(geometryParam, function (serviceResult) {
  340. console.log(serviceResult);
  341. if (!serviceResult.result) {
  342. return;
  343. }
  344. if (serviceResult.result.features.features.length === 0) {
  345. return;
  346. }
  347. var smids='';
  348. var names='';
  349. var count=1;
  350. L.geoJSON(serviceResult.result.features.features, {
  351. onEachFeature: function (feature, layer) {
  352. count +=1;
  353. smids += feature.properties.SMID+",";
  354. names += feature.properties.NAME+",";
  355. }
  356. });
  357. if(count>400){
  358. $.modal.alertWarning("选择建筑物过多!,请重新选取!");
  359. return
  360. }
  361. //此处根据resultDataSMID和resultDataName这两个集合的值,去后台进行业务查询
  362. $.modal.open("全部楼栋", prefix + "/rfhMultiBefore/"+names+"/"+smids,1400, 720);
  363. });
  364. };