From de31b15f40142c120315da4a8e90c82d15e754e8 Mon Sep 17 00:00:00 2001 From: gisnewbie <196359569@qq.com> Date: Thu, 22 Jul 2021 19:20:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E7=9C=8B=E5=9C=B0=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- node_modules/@types/geojson/package.json | 80 ++-- .../terraformer-wkt-parser/package.json | 64 ++- node_modules/terraformer/package.json | 89 +++- package-lock.json | 41 +- package.json | 4 +- pages/look/look.js | 382 +++++++++++++++--- pages/look/look.json | 5 +- pages/look/look.wxml | 127 +++--- pages/look/look.wxss | 50 ++- project.config.json | 9 +- utils/gisApi.js | 3 +- 11 files changed, 634 insertions(+), 220 deletions(-) diff --git a/node_modules/@types/geojson/package.json b/node_modules/@types/geojson/package.json index 4877235..8c089bb 100644 --- a/node_modules/@types/geojson/package.json +++ b/node_modules/@types/geojson/package.json @@ -1,27 +1,59 @@ { + "_args": [ + [ + "@types/geojson@1.0.6", + "E:\\04_项目代码\\mini-program" + ] + ], + "_from": "@types/geojson@1.0.6", + "_id": "@types/geojson@1.0.6", + "_inBundle": false, + "_integrity": "sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w==", + "_location": "/@types/geojson", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "@types/geojson@1.0.6", "name": "@types/geojson", - "version": "1.0.6", - "description": "TypeScript definitions for GeoJSON Format Specification Revision", - "license": "MIT", - "contributors": [ - { - "name": "Jacob Bruun", - "url": "https://github.com/cobster", - "githubUsername": "cobster" - }, - { - "name": "Arne Schubert", - "url": "https://github.com/atd-schubert", - "githubUsername": "atd-schubert" - } - ], - "main": "", - "repository": { - "type": "git", - "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git" + "escapedName": "@types%2fgeojson", + "scope": "@types", + "rawSpec": "1.0.6", + "saveSpec": null, + "fetchSpec": "1.0.6" + }, + "_requiredBy": [ + "/terraformer", + "/terraformer-wkt-parser" + ], + "_resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-1.0.6.tgz", + "_spec": "1.0.6", + "_where": "E:\\04_项目代码\\mini-program", + "bugs": { + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues" + }, + "contributors": [ + { + "name": "Jacob Bruun", + "url": "https://github.com/cobster" }, - "scripts": {}, - "dependencies": {}, - "typesPublisherContentHash": "2a374692a48615d90fde45b274e247a1ec98647d93fe7c7ee355386108689bcd", - "typeScriptVersion": "2.3" -} \ No newline at end of file + { + "name": "Arne Schubert", + "url": "https://github.com/atd-schubert" + } + ], + "dependencies": {}, + "description": "TypeScript definitions for GeoJSON Format Specification Revision", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme", + "license": "MIT", + "main": "", + "name": "@types/geojson", + "repository": { + "type": "git", + "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git" + }, + "scripts": {}, + "typeScriptVersion": "2.3", + "typesPublisherContentHash": "2a374692a48615d90fde45b274e247a1ec98647d93fe7c7ee355386108689bcd", + "version": "1.0.6" +} diff --git a/node_modules/terraformer-wkt-parser/package.json b/node_modules/terraformer-wkt-parser/package.json index 2fa7e51..0d6ea31 100644 --- a/node_modules/terraformer-wkt-parser/package.json +++ b/node_modules/terraformer-wkt-parser/package.json @@ -1,19 +1,55 @@ { - "name": "terraformer-wkt-parser", - "description": "Well-Known Text parser", - "version": "1.2.1", - "author": "Jerry Sievert (http://legitimatesounding.com)", + "_args": [ + [ + "terraformer-wkt-parser@1.2.1", + "E:\\04_项目代码\\mini-program" + ] + ], + "_from": "terraformer-wkt-parser@1.2.1", + "_id": "terraformer-wkt-parser@1.2.1", + "_inBundle": false, + "_integrity": "sha512-+CJyNLWb3lJ9RsZMTM66BY0MT3yIo4l4l22Jd9CrZuwzk54fsu4Sc7zejuS9fCITTuTQy3p06d4MZMVI7v5wSg==", + "_location": "/terraformer-wkt-parser", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "terraformer-wkt-parser@1.2.1", + "name": "terraformer-wkt-parser", + "escapedName": "terraformer-wkt-parser", + "rawSpec": "1.2.1", + "saveSpec": null, + "fetchSpec": "1.2.1" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.2.1.tgz", + "_spec": "1.2.1", + "_where": "E:\\04_项目代码\\mini-program", + "author": { + "name": "Jerry Sievert", + "email": "code@legitimatesounding.com", + "url": "http://legitimatesounding.com" + }, "bugs": { "url": "https://github.com/Esri/terraformer-wkt-parser/issues" }, "contributors": [ - "Patrick Arlt ", - "John Gravois " + { + "name": "Patrick Arlt", + "email": "parlt@esri.com" + }, + { + "name": "John Gravois", + "email": "jgravois@esri.com" + } ], "dependencies": { "@types/geojson": "^1.0.0", "terraformer": "~1.0.5" }, + "description": "Well-Known Text parser", "devDependencies": { "gh-release": "^3.2.1", "grunt": "^1.0.3", @@ -31,6 +67,9 @@ "directories": { "test": "test" }, + "engines": { + "node": ">=4.2.6" + }, "files": [ "terraformer-wkt-parser.min.js", "terraformer-wkt-parser.d.ts" @@ -43,19 +82,18 @@ ], "license": "MIT", "main": "terraformer-wkt-parser.js", - "typings": "terraformer-wkt-parser.d.ts", + "name": "terraformer-wkt-parser", "repository": { "type": "git", - "url": "git@github.com:Esri/terraformer-wkt-parser.git" + "url": "git+ssh://git@github.com/Esri/terraformer-wkt-parser.git" }, "scripts": { "prepare": "grunt wkt-parser && grunt uglify", + "release": "./release.sh", "test": "npm run test:node && grunt test", "test:node": "jasmine --config=jasmine.json", - "test:ts": "tslint test.ts terraformer-wkt-parser.d.ts && tsc -p tsconfig.json && node test.js", - "release": "./release.sh" + "test:ts": "tslint test.ts terraformer-wkt-parser.d.ts && tsc -p tsconfig.json && node test.js" }, - "engines": { - "node": ">=4.2.6" - } + "typings": "terraformer-wkt-parser.d.ts", + "version": "1.2.1" } diff --git a/node_modules/terraformer/package.json b/node_modules/terraformer/package.json index 0433107..1932f33 100644 --- a/node_modules/terraformer/package.json +++ b/node_modules/terraformer/package.json @@ -1,9 +1,56 @@ { - "name": "terraformer", - "version": "1.0.12", + "_args": [ + [ + "terraformer@1.0.12", + "E:\\04_项目代码\\mini-program" + ] + ], + "_from": "terraformer@1.0.12", + "_id": "terraformer@1.0.12", + "_inBundle": false, + "_integrity": "sha512-MokUp0+MFal4CmJDVL6VAO1bKegeXcBM2RnPVfqcFIp2IIv8EbPAjG0j/vEy/vuKB8NVMMSF2vfpVS/QLe4DBg==", + "_location": "/terraformer", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "terraformer@1.0.12", + "name": "terraformer", + "escapedName": "terraformer", + "rawSpec": "1.0.12", + "saveSpec": null, + "fetchSpec": "1.0.12" + }, + "_requiredBy": [ + "/terraformer-wkt-parser" + ], + "_resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.12.tgz", + "_spec": "1.0.12", + "_where": "E:\\04_项目代码\\mini-program", + "author": { + "name": "Patrick Arlt", + "email": "parlt@esri.com", + "url": "http://patrickarlt.com" + }, + "bugs": { + "url": "https://github.com/esri/terraformer/issues" + }, + "contributors": [ + { + "name": "Patrick Arlt", + "email": "parlt@esri.com", + "url": "http://patrickarlt.com" + }, + { + "name": "Jerry Sievert", + "email": "jsievert@esri.com", + "url": "http://legitimatesounding.com" + } + ], + "dependencies": { + "@types/geojson": "^7946.0.0 || ^1.0.0" + }, "description": "A Geo-toolkit built in Javascript.", - "main": "terraformer.js", - "typings": "terraformer.d.ts", "devDependencies": { "gh-release": "^3.5.0", "grunt": "^1.0.4", @@ -20,31 +67,31 @@ "tslint": "^4.5.1", "typescript": "^2.2.1" }, + "engines": { + "node": ">=4.2.6" + }, "files": [ "terraformer.min.js", "terraformer.d.ts" ], - "scripts": { - "pretest": "grunt lint", - "test": "npm run test:node && grunt test", - "test:node": "jasmine --config=jasmine.json", - "test:ts": "tslint test.ts index.d.ts && tsc -p tsconfig.json && node test.js", - "release": "./release.sh" + "homepage": "https://github.com/esri/terraformer#readme", + "license": "MIT", + "main": "terraformer.js", + "name": "terraformer", + "optionalDependencies": { + "@types/geojson": "^7946.0.0 || ^1.0.0" }, "repository": { "type": "git", "url": "git://github.com/esri/terraformer.git" }, - "author": "Patrick Arlt (http://patrickarlt.com)", - "contributors": [ - "Patrick Arlt (http://patrickarlt.com)", - "Jerry Sievert (http://legitimatesounding.com)" - ], - "license": "MIT", - "optionalDependencies": { - "@types/geojson": "^7946.0.0 || ^1.0.0" + "scripts": { + "pretest": "grunt lint", + "release": "./release.sh", + "test": "npm run test:node && grunt test", + "test:node": "jasmine --config=jasmine.json", + "test:ts": "tslint test.ts index.d.ts && tsc -p tsconfig.json && node test.js" }, - "engines": { - "node": ">=4.2.6" - } + "typings": "terraformer.d.ts", + "version": "1.0.12" } diff --git a/package-lock.json b/package-lock.json index 740004b..7085116 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,47 +1,8 @@ { "name": "mini-program", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "terraformer-wkt-parser": "^1.2.1" - } - }, - "node_modules/@types/geojson": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-1.0.6.tgz", - "integrity": "sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w==" - }, - "node_modules/terraformer": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.12.tgz", - "integrity": "sha512-MokUp0+MFal4CmJDVL6VAO1bKegeXcBM2RnPVfqcFIp2IIv8EbPAjG0j/vEy/vuKB8NVMMSF2vfpVS/QLe4DBg==", - "deprecated": "terraformer is deprecated and no longer supported. Please use @terraformer/arcgis.", - "engines": { - "node": ">=4.2.6" - }, - "optionalDependencies": { - "@types/geojson": "^7946.0.0 || ^1.0.0" - } - }, - "node_modules/terraformer-wkt-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.2.1.tgz", - "integrity": "sha512-+CJyNLWb3lJ9RsZMTM66BY0MT3yIo4l4l22Jd9CrZuwzk54fsu4Sc7zejuS9fCITTuTQy3p06d4MZMVI7v5wSg==", - "deprecated": "terraformer-wkt-parser is deprecated and no longer supported. Please use @terraformer/wkt.", - "dependencies": { - "@types/geojson": "^1.0.0", - "terraformer": "~1.0.5" - }, - "engines": { - "node": ">=4.2.6" - } - } - }, "dependencies": { "@types/geojson": { "version": "1.0.6", diff --git a/package.json b/package.json index 0cbba0f..8e1fbdd 100644 --- a/package.json +++ b/package.json @@ -14,5 +14,7 @@ "license": "ISC", "dependencies": { "terraformer-wkt-parser": "^1.2.1" - } + }, + "devDependencies": {}, + "keywords": [] } diff --git a/pages/look/look.js b/pages/look/look.js index 113b0b1..fb2de7d 100644 --- a/pages/look/look.js +++ b/pages/look/look.js @@ -1,6 +1,20 @@ // pages/look/look.js const $api = require('../../utils/gisApi').API; const WKT = require('../../utils/terraformer-wkt-parser.min'); +const gisUtil = require('../../utils/gitUtil') + +const global = {}; +//年份范围 +const date = new Date(); +const year = date.getFullYear(); +const yearSpan=3; +const max = year + yearSpan; +const min = 1949; +const arryList =[]; +for(let idx=min;idx < max;idx++){ + arryList.push({index:idx-min,value:idx,label:''+idx+'年' }); +} ; + Page({ /** @@ -11,6 +25,10 @@ Page({ scale: 13, latitude: 29.543812, longitude: 106.434042, + centerLocation:{ + latitude: 29.543812, + longitude: 106.434042, + }, markers: [], circles:[], polygons: [], @@ -49,9 +67,106 @@ Page({ id: 9, name: '小组团', state: false - }] + }], + halfScreenDialogVisible: false, + dialogVisible: false, + buttons: [{text: '取消'}, {text: '详情'}], + titleLand:'G01-XXXXXXXXXXX02', + totalConsArea:'42356', + startingFloorPrice:'45852', + transferPrice:'12553', + auctionDate:'2021-07-18', + years:arryList, + indexStart:0, + indexEnd:0, + }, + bindPickerChangeStart(e){ + let sIdx =Number(e.detail.value); + if(sIdx>this.data.indexEnd){ + sIdx=this.data.indexEnd; + } + this.setData({ + start:arryList[sIdx].value, + indexStart:sIdx + }) + }, + bindPickerChangeEnd(e){ + let eIdx =Number(e.detail.value); + if(eIdx item === id); if (hasAc) { @@ -100,6 +215,7 @@ Page({ // 已出让 if (state) { this.deletPolygon(id); + this.removeFeaturesToList(id); } else { this.inWhich({ latitude, @@ -111,6 +227,7 @@ Page({ // 挂牌中 if (state) { this.deletPolygon(id); + this.removeFeaturesToList(id); } else { this.inQuotation({ latitude, @@ -122,6 +239,7 @@ Page({ // 待挂牌 if (state) { this.deletPolygon(id); + this.removeFeaturesToList(id); } else { this.toBelisted({ latitude, @@ -191,16 +309,33 @@ Page({ this.clearCircles(id); } else { let data = [{ + gid:1, latitude, longitude - }]; - console.log(data) + }]; + console.log(data); this.setCircles(data, id); } break; } }, + onMapTaped(e){ + let that= this; + let { + latitude, + longitude + } = e.detail; + let point = {latitude,longitude} // 地图点击点的经纬度 + let features = that.selectFeatureList(point); + console.log(features); + if(features && features.length>0){ + let f = features[0]; + // console.log(f); + // console.log(f); + that.openLandInfo(f) + } + }, // 清除地块 deletPolygon(id) { let { @@ -234,8 +369,8 @@ Page({ latitude: item.lat, longitude: item.lon, iconPath, - width: 40, - height: 45, + width: 12, + height: 16, } }) if (markers.length > 0) { @@ -259,13 +394,13 @@ Page({ index-- } } - console.log('markers', markers); this.setData({ markers }) } } }, + //设置圆环 setCircles(data, id) { let { @@ -273,30 +408,27 @@ Page({ } = this.data let makeArr = data.map(item => { + console.log('---') + console.log(item) + let { + latitude, + longitude + }= item; return { id: item.gid, aid: id, - latitude: item.latitude, - longitude: item.longitude, + latitude: latitude, + longitude: longitude, color: '#2317da66', fillColor: '#7cb5ec88', radius: 3000, strokeWidth: 2 } }) - if (circles.length > 0) { - circles = circles.concat(makeArr) - console.log(circles) - this.setData({ - circles - }) - }else{ - circles = makeArr - console.log(circles) - this.setData({ - circles - }) - } + circles = makeArr; + this.setData({ + circles + }) }, //清除圆环 clearCircles(id) { @@ -312,7 +444,6 @@ Page({ index-- } } - console.log('circles', circles); this.setData({ circles }) @@ -343,44 +474,96 @@ Page({ }) } }, + showCenterLocation(centerPoint){ + let id = -1; + let{ + latitude, + longitude, + }=centerPoint; + this.clearPoint(id); + let { + markers + } = this.data + let mark = { + aid: id, + id: id, + latitude, + longitude, + width: 16, + height:24, + } + markers.push(mark) + this.setData({ +markers: markers + }) + }, //定位当前 scaleBack() { let that = this; wx.getLocation({ type: 'gcj02', success: function (res) { - res = { - latitude: 29.6267, - longitude: 106.5682 - }; //测试数据(发布时删除) - let latitude = res.latitude - let longitude = res.longitude - let { - markers - } = that.data - let mark = { - id: -1, - latitude, - longitude, - } - markers.push(mark) + let latitude = Number(res.latitude) + let longitude = Number(res.longitude) that.setData({ latitude: latitude, longitude: longitude, - markers: markers - }) + centerLocation:{ + latitude, + longitude, + }, + }) + that.showCenterLocation({latitude,longitude}) } }) }, - //点击MORE标记点 markertap(e) { - let id = e.detail.markerId - wx.navigateTo({ - url: '/pages/look-list/look-list?id=' + id, - }) + }, + regionchange(e) { + if(e.type==='end'){ + let { + latitude, + longitude + } = e.detail.centerLocation; + this.data.longitude=longitude; + this.data.longitude=longitude; + + this.setData({ + centerLocation: e.detail.centerLocation + }); + let {actives} = this.data; + let id9 = 9; + let state9 = actives.some(item => item === id9); + if (state9) { + this.clearCircles(id9); + let data = [{ + latitude, + longitude + }]; + this.setCircles(data, id9); + } + else { + this.clearCircles(id9); + } + let id7 = 7; + let state7= actives.some(item => item === id7); + if (state7) { + this.clearPoint(id7); + this.getComplete({ + latitude, + longitude + }, id7); + } + else { + this.clearPoint(7); + } + //中心点--重绘 + this.showCenterLocation({latitude,longitude}) + } + }, // 已出让 inWhich(res, id) { const that = this; @@ -388,13 +571,14 @@ Page({ start, end } = this.data; - $api.getLandListing({ + $api.getLandList({ lon: res.longitude, lat: res.latitude, start: `${start}-01-01`, - end: `${end}-01-01`, + end: `${end}-12-31`, }).then(data => { that.setWKT(data, id); + that.addFeaturesToList(data,id); }) }, @@ -406,6 +590,7 @@ Page({ lat: res.latitude }).then(data => { that.setWKT(data, id); + that.addFeaturesToList(data,id); }) }, @@ -417,8 +602,66 @@ Page({ lat: res.latitude }).then(data => { that.setWKT(data, id); + that.addFeaturesToList(data,id); }) }, + + addFeaturesToList(data, tid){ + let key= 'key'+tid; + let features = data.map(item => { + let geomPoints = WKT.parse(item.geom).coordinates; + let properties =item; + properties.tid=tid;//类型 + let polygon ={ + key,tid,properties, + type: "Feature", + geometry: { + type: "Polygon", + coordinates:geomPoints + } + } + return polygon; + }); + if(global.features[key] && global.features[key].length>0){ + global.features[key] = global.features[key].concat(features) + } + else{ + global.features[key] = features; + } + }, + removeFeaturesToList(tid){ + let key= 'key'+tid; + if(global.features[key] && global.features[key].length>0){ + global.features[key]=[]; + } + }, + selectFeatureList(pt,maxCount){ + maxCount = maxCount||1; + let x = pt.longitude; + let y = pt.latitude; + let selectList = []; + let features=[]; + if(global.features['key1'] &&global.features['key1'].length>0){ + features = features.concat(global.features['key1']); + } + if(global.features['key2'] &&global.features['key2'].length>0){ + features = features.concat(global.features['key2']); + } + if(global.features['key3'] &&global.features['key3'].length>0){ + features = features.concat(global.features['key3']); + } + for(let i =0; i < features.length;i++){ + let feature =features[i]; + let hitTest =gisUtil.isPointInPolygon(y,x,feature.geometry.coordinates[0]); + if(hitTest){ + selectList.push(feature); + if(selectList.length>=maxCount){ + break; + } + } + } + return selectList + }, // MORE地块 getMoreInfo(res, id) { @@ -470,7 +713,19 @@ Page({ that.setWKT(data, id); }) }, - +/* + * 10和16进制转换 + * prin 为true将10进制转为16进制 + * prin 为false将16进制转为10进制 + */ + ten2XO(ten){ + let val = Number(ten); + let xo= val.toString(16) + if(val<16){ + xo = '0'+xo + } + return xo; + }, // 地块数据解析 setWKT(data, id) { let { @@ -495,12 +750,15 @@ Page({ }) } }) + let strokeColor = ''+ item.line_color + this.ten2XO(item.line_opaqueness); + let strokeWidth = item.strokeWidth ? Number(item.strokeWidth):2; + let fillColor = ''+ item.fill_color + this.ten2XO(item.fill_opaqueness); let polygon = { points, - strokeColor: '#FFF', - fillColor: '#FFCC4050', //`#${item.fillcolor}`, + strokeColor, + strokeWidth, + fillColor, zIndex: 1, - strokeWidth: 2, id } return polygon @@ -511,12 +769,30 @@ Page({ }) }, + /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { - this.scaleBack() + + global.bboxkey=0; + global.features={ + key1:[], + key2:[], + key3:[], + }; + let sIdx = year-yearSpan-min; + let eIdx = year-min; + this.setData( + { + indexStart:sIdx, + indexEnd:eIdx, + start:arryList[sIdx].value, + end:arryList[eIdx].value, + } + ) + this.scaleBack(); }, /** diff --git a/pages/look/look.json b/pages/look/look.json index 8835af0..81d8cc1 100644 --- a/pages/look/look.json +++ b/pages/look/look.json @@ -1,3 +1,6 @@ { - "usingComponents": {} + "usingComponents": { + "mp-half-screen-dialog": "weui-miniprogram/half-screen-dialog/half-screen-dialog", + "mp-dialog": "weui-miniprogram/dialog/dialog" + } } \ No newline at end of file diff --git a/pages/look/look.wxml b/pages/look/look.wxml index c3e10af..4b67fea 100644 --- a/pages/look/look.wxml +++ b/pages/look/look.wxml @@ -24,68 +24,93 @@ 土地池 - - - - 卫星图 - 平面图 - - - - - - 看地块 - - + + + + 总计容建筑面积:{{totalConsArea}}(㎡) + 楼面起始价:{{startingFloorPrice}}(万) + 起始总价:{{transferPrice}}(万) + 竞拍时间:{{auctionDate}} + + + + + + + 看地块 + + 已出让 - - - {{start}}年 - {{end}}年 - - + + + + {{start}}年 + + + - + + + {{end}}年 + + + 挂牌中 - - + + 拟挂牌 - - - - - - 看区位 - - + + + + + + 看区位 + + 行政区 - - + + 大组团 - - + + 小组团 - - - + + + - - 看配套 - - + + 看配套 + + 配套 - - + + 环线 - - + + 3KM圈 - - - - + + + + + + + + 卫星图 + 平面图 + + +