Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web
8 files modified
4 files added
| New file |
| | |
| | | {"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":360802,"name":"吉州区","center":[114.987331,27.112367],"centroid":[114.940577,27.150739],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":0,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.068571,27.160774],[115.078507,27.16655],[115.091301,27.175422],[115.099557,27.177109],[115.108801,27.181853],[115.11483,27.189672],[115.11107,27.193204],[115.110839,27.202214],[115.101007,27.203801],[115.093675,27.200666],[115.093696,27.203603],[115.086133,27.20767],[115.081322,27.20519],[115.083339,27.202035],[115.079033,27.200011],[115.078024,27.203384],[115.07147,27.20271],[115.064894,27.204972],[115.05876,27.214754],[115.049643,27.213583],[115.043865,27.215785],[115.040735,27.222829],[115.04458,27.22634],[115.039496,27.229971],[115.03855,27.237886],[115.034223,27.242726],[115.034706,27.249033],[115.028845,27.25066],[115.025757,27.256094],[115.022941,27.266388],[115.024454,27.27194],[115.021975,27.279892],[115.022983,27.284195],[115.016975,27.28937],[115.011639,27.29056],[115.00185,27.287962],[114.994224,27.282529],[114.990568,27.27777],[114.980484,27.273685],[114.983951,27.26254],[114.98143,27.251076],[114.980947,27.24338],[114.973951,27.243182],[114.969035,27.248994],[114.961997,27.240484],[114.958195,27.237906],[114.949183,27.236338],[114.941095,27.231558],[114.933826,27.222849],[114.932628,27.214873],[114.92141,27.208186],[114.896369,27.204436],[114.889667,27.206321],[114.87763,27.202055],[114.867924,27.202154],[114.860592,27.205924],[114.854143,27.205111],[114.847714,27.202114],[114.83158,27.188382],[114.829606,27.178955],[114.807253,27.166788],[114.803661,27.162461],[114.802842,27.153587],[114.806665,27.146381],[114.804879,27.139909],[114.80656,27.133734],[114.809711,27.13018],[114.810698,27.119398],[114.817064,27.110282],[114.817589,27.102934],[114.820551,27.099737],[114.833576,27.092467],[114.836538,27.082655],[114.839668,27.077331],[114.839038,27.067139],[114.826475,27.061596],[114.822211,27.053589],[114.820614,27.044827],[114.821602,27.039282],[114.834942,27.035507],[114.843198,27.035606],[114.85534,27.031393],[114.86721,27.036003],[114.875697,27.037434],[114.874941,27.044032],[114.877987,27.04737],[114.886033,27.047946],[114.891915,27.051026],[114.902713,27.052437],[114.908259,27.057484],[114.913259,27.065053],[114.924792,27.061239],[114.935296,27.060583],[114.943279,27.064398],[114.950926,27.065192],[114.958195,27.059252],[114.95767,27.05341],[114.952082,27.051841],[114.953321,27.044827],[114.959372,27.0365],[114.9633,27.035984],[114.970086,27.040375],[114.978552,27.0519],[114.985463,27.05657],[114.993152,27.058219],[114.991514,27.076198],[114.989203,27.088256],[114.990883,27.097929],[114.995568,27.106549],[115.000925,27.112109],[115.009223,27.116697],[115.025693,27.140643],[115.030798,27.144376],[115.045252,27.148009],[115.051428,27.152118],[115.068571,27.160774]]]]}},{"type":"Feature","properties":{"adcode":360803,"name":"青原区","center":[115.016306,27.105879],"centroid":[115.224044,26.894879],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":1,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.068571,27.160774],[115.051428,27.152118],[115.045252,27.148009],[115.030798,27.144376],[115.025693,27.140643],[115.009223,27.116697],[115.000925,27.112109],[114.995568,27.106549],[114.990883,27.097929],[114.989203,27.088256],[114.991514,27.076198],[114.993152,27.058219],[115.003782,27.04431],[115.012395,27.036719],[115.018908,27.033003],[115.038739,27.027597],[115.04647,27.024238],[115.057794,27.014857],[115.060882,27.010802],[115.064096,26.996768],[115.053571,26.987981],[115.042248,26.968953],[115.036765,26.965811],[115.047038,26.961198],[115.050693,26.953005],[115.05563,26.95028],[115.060651,26.941072],[115.075356,26.937392],[115.083885,26.928581],[115.085776,26.920246],[115.094726,26.920186],[115.094221,26.914337],[115.091196,26.91008],[115.093654,26.902758],[115.091007,26.895615],[115.085083,26.89086],[115.085335,26.88489],[115.090314,26.880851],[115.096049,26.870522],[115.101511,26.863477],[115.103255,26.853266],[115.112057,26.850141],[115.127813,26.852629],[115.132729,26.850101],[115.138128,26.841203],[115.138926,26.836206],[115.14985,26.834594],[115.156678,26.831806],[115.1613,26.834434],[115.163148,26.830353],[115.173337,26.827526],[115.183001,26.82655],[115.187938,26.821434],[115.197832,26.816316],[115.203525,26.815759],[115.208294,26.805205],[115.208714,26.799251],[115.213819,26.789294],[115.219828,26.784036],[115.237831,26.780052],[115.262684,26.766129],[115.276339,26.757822],[115.286822,26.752861],[115.294175,26.740887],[115.304279,26.736265],[115.301695,26.727836],[115.302536,26.722475],[115.307452,26.715321],[115.317115,26.71291],[115.321401,26.70434],[115.319048,26.701709],[115.320729,26.696287],[115.324699,26.692958],[115.323481,26.690547],[115.328901,26.688613],[115.332955,26.679961],[115.33493,26.672266],[115.336317,26.673801],[115.347325,26.673542],[115.350665,26.670751],[115.350455,26.666684],[115.357808,26.661919],[115.357493,26.656256],[115.363816,26.656396],[115.368543,26.652687],[115.375454,26.655279],[115.390664,26.655997],[115.406294,26.6616],[115.41079,26.659067],[115.418289,26.663255],[115.427827,26.671289],[115.426693,26.675277],[115.438772,26.683829],[115.449507,26.687816],[115.455431,26.684447],[115.461104,26.678885],[115.462721,26.672525],[115.477406,26.671628],[115.475893,26.675137],[115.488645,26.681835],[115.487237,26.68955],[115.495388,26.698799],[115.497279,26.704439],[115.502363,26.71004],[115.508749,26.710398],[115.511396,26.713946],[115.50564,26.724548],[115.499527,26.729689],[115.499128,26.734551],[115.493855,26.739712],[115.492006,26.744792],[115.486544,26.749096],[115.474822,26.750729],[115.469927,26.753837],[115.472028,26.75824],[115.46957,26.760153],[115.452742,26.759694],[115.449507,26.769097],[115.444549,26.774156],[115.433835,26.778698],[115.432407,26.787322],[115.429403,26.795049],[115.424109,26.799689],[115.41268,26.795049],[115.401441,26.795268],[115.39745,26.791863],[115.390727,26.793894],[115.390454,26.802178],[115.38203,26.809049],[115.379761,26.815122],[115.3885,26.820418],[115.383752,26.829019],[115.386273,26.834972],[115.377135,26.834534],[115.3664,26.835589],[115.354614,26.827088],[115.344867,26.834952],[115.342262,26.839292],[115.345686,26.845204],[115.345644,26.851793],[115.341232,26.86073],[115.332955,26.868791],[115.324783,26.865387],[115.317493,26.864929],[115.313502,26.861407],[115.291423,26.853266],[115.285813,26.85663],[115.281423,26.863855],[115.272936,26.869169],[115.266444,26.869368],[115.261654,26.873826],[115.262978,26.878622],[115.252558,26.891636],[115.24802,26.91571],[115.244953,26.919927],[115.232516,26.926969],[115.221739,26.928859],[115.217244,26.931684],[115.215542,26.938068],[115.207307,26.946999],[115.215668,26.95034],[115.216298,26.957002],[115.219323,26.961476],[115.229827,26.963266],[115.233504,26.965533],[115.23239,26.970604],[115.223399,26.976986],[115.22176,26.984402],[115.228798,26.986848],[115.231907,26.997742],[115.232684,27.005773],[115.225857,27.007821],[115.22197,27.013744],[115.226046,27.023562],[115.232054,27.027219],[115.238315,27.02716],[115.245205,27.036699],[115.241529,27.04425],[115.218693,27.066742],[115.217412,27.073795],[115.219092,27.080748],[115.214765,27.088236],[115.208483,27.092944],[115.204471,27.092884],[115.200773,27.088733],[115.195164,27.086508],[115.187328,27.088594],[115.180123,27.094215],[115.170375,27.09489],[115.166888,27.09346],[115.159934,27.085376],[115.15214,27.085296],[115.13775,27.098485],[115.135733,27.103709],[115.131636,27.106549],[115.122666,27.104027],[115.108318,27.094334],[115.113822,27.08766],[115.113948,27.079933],[115.115943,27.073695],[115.105482,27.070894],[115.095692,27.076079],[115.088444,27.073556],[115.08689,27.069186],[115.081491,27.07008],[115.077373,27.074113],[115.08107,27.078999],[115.089684,27.079854],[115.09231,27.084224],[115.093801,27.092447],[115.0867,27.097651],[115.083297,27.106787],[115.079201,27.109369],[115.071071,27.111176],[115.070587,27.120609],[115.077541,27.144078],[115.068571,27.160774]]]]}},{"type":"Feature","properties":{"adcode":360821,"name":"吉安县","center":[114.905117,27.040042],"centroid":[114.743834,27.137422],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":2,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.880949,27.592395],[114.872798,27.589172],[114.865277,27.591901],[114.858365,27.585692],[114.848429,27.582647],[114.847126,27.587571],[114.835761,27.590655],[114.82677,27.590734],[114.82011,27.599474],[114.819228,27.60669],[114.811014,27.610466],[114.808367,27.614895],[114.801959,27.617208],[114.799564,27.615369],[114.793892,27.617129],[114.792401,27.623731],[114.787023,27.628594],[114.781624,27.628159],[114.778283,27.620153],[114.773851,27.618513],[114.772464,27.613788],[114.766141,27.61191],[114.759712,27.605465],[114.754817,27.607521],[114.745364,27.604061],[114.741015,27.592455],[114.737045,27.589449],[114.742402,27.580214],[114.742906,27.570069],[114.74549,27.565243],[114.744334,27.549182],[114.748767,27.54396],[114.747822,27.537669],[114.736814,27.533396],[114.733347,27.530666],[114.733284,27.52103],[114.729377,27.516203],[114.72215,27.5127],[114.722213,27.509554],[114.733452,27.502529],[114.737948,27.494633],[114.735385,27.486874],[114.740553,27.486479],[114.749418,27.48155],[114.747024,27.474286],[114.75257,27.466902],[114.7532,27.462824],[114.759733,27.456588],[114.762737,27.450787],[114.767548,27.449718],[114.781561,27.436809],[114.781287,27.42867],[114.784081,27.42164],[114.784292,27.402151],[114.790279,27.390405],[114.789922,27.386621],[114.782716,27.380817],[114.787905,27.368692],[114.797758,27.361598],[114.797842,27.357259],[114.791497,27.350164],[114.785258,27.339225],[114.785867,27.335123],[114.790237,27.328859],[114.789544,27.32331],[114.786077,27.320852],[114.784313,27.315024],[114.771141,27.312169],[114.761267,27.303526],[114.758683,27.297697],[114.747024,27.286892],[114.745805,27.277255],[114.748599,27.271682],[114.746729,27.268192],[114.739566,27.262044],[114.734482,27.259783],[114.733789,27.253972],[114.729503,27.251493],[114.715028,27.246415],[114.713537,27.239869],[114.704798,27.238005],[114.700764,27.22761],[114.692172,27.22511],[114.689126,27.222174],[114.681038,27.225765],[114.679273,27.222829],[114.682319,27.218781],[114.680807,27.214496],[114.675744,27.215607],[114.671185,27.213782],[114.666647,27.215131],[114.662299,27.211976],[114.653937,27.210389],[114.646396,27.215746],[114.642362,27.221361],[114.637047,27.223146],[114.632005,27.217948],[114.626186,27.21771],[114.618602,27.212928],[114.623245,27.203007],[114.622552,27.196975],[114.618371,27.190625],[114.625661,27.175125],[114.630556,27.1705],[114.631942,27.1652],[114.631921,27.1546],[114.637194,27.14793],[114.629757,27.137447],[114.636165,27.129803],[114.634589,27.126824],[114.628182,27.125514],[114.62835,27.118524],[114.617951,27.111593],[114.611375,27.110223],[114.599968,27.102319],[114.589317,27.106946],[114.590115,27.10925],[114.578099,27.118822],[114.561839,27.096737],[114.556125,27.090242],[114.546041,27.090838],[114.540327,27.087382],[114.529508,27.084303],[114.524045,27.079754],[114.513037,27.07749],[114.510621,27.075761],[114.494403,27.071689],[114.49058,27.069285],[114.483752,27.071888],[114.474992,27.073179],[114.469971,27.072007],[114.462744,27.067159],[114.455119,27.069007],[114.452409,27.057384],[114.447451,27.049476],[114.447976,27.04578],[114.45306,27.036083],[114.45474,27.029882],[114.471463,27.021297],[114.475475,27.014837],[114.476547,27.009689],[114.481462,27.006847],[114.478164,27.004819],[114.469236,26.990963],[114.457429,26.980068],[114.455665,26.968734],[114.447934,26.961596],[114.436863,26.962212],[114.426296,26.959826],[114.41909,26.959547],[114.418985,26.956624],[114.428249,26.951454],[114.431254,26.947456],[114.430854,26.940813],[114.433732,26.936716],[114.432346,26.928939],[114.424027,26.925676],[114.420813,26.919629],[114.420455,26.911492],[114.42201,26.906777],[114.430371,26.899973],[114.430518,26.891735],[114.433522,26.882363],[114.439909,26.876413],[114.445875,26.864253],[114.446106,26.855774],[114.451253,26.854082],[114.45766,26.847772],[114.472156,26.844945],[114.479887,26.839989],[114.486609,26.842557],[114.49413,26.849782],[114.500895,26.850758],[114.508983,26.846777],[114.517344,26.849743],[114.531713,26.849086],[114.537911,26.843751],[114.543814,26.841163],[114.550936,26.841402],[114.563162,26.837759],[114.568393,26.833499],[114.587174,26.830811],[114.591691,26.828302],[114.613539,26.819781],[114.617237,26.820956],[114.620367,26.826909],[114.631837,26.83543],[114.635114,26.844866],[114.641648,26.850579],[114.643875,26.854938],[114.640618,26.86075],[114.641669,26.865367],[114.64858,26.867159],[114.650009,26.870283],[114.648748,26.877786],[114.651059,26.886144],[114.656584,26.889586],[114.675765,26.889925],[114.684252,26.885109],[114.694945,26.889288],[114.699945,26.901783],[114.706541,26.909742],[114.713348,26.915252],[114.720953,26.91943],[114.725953,26.917202],[114.734986,26.916983],[114.7432,26.922951],[114.749061,26.92134],[114.763893,26.923647],[114.767149,26.928163],[114.77946,26.925637],[114.784271,26.917142],[114.78822,26.918614],[114.788115,26.924682],[114.794753,26.931803],[114.802905,26.935085],[114.80261,26.939441],[114.794732,26.947715],[114.811266,26.95728],[114.814144,26.963564],[114.822841,26.962292],[114.829354,26.964757],[114.837652,26.962292],[114.849983,26.956644],[114.849815,26.949266],[114.858534,26.947217],[114.862525,26.936597],[114.868806,26.936716],[114.874184,26.931962],[114.873575,26.92496],[114.866811,26.923309],[114.862084,26.906658],[114.863134,26.903574],[114.870361,26.903176],[114.875718,26.907673],[114.881894,26.916923],[114.895697,26.914596],[114.901978,26.911353],[114.910024,26.917381],[114.916221,26.917759],[114.923469,26.912686],[114.931788,26.915213],[114.934078,26.919927],[114.94267,26.925776],[114.93578,26.931445],[114.936641,26.936119],[114.943048,26.938387],[114.949603,26.944393],[114.957082,26.944771],[114.964035,26.941052],[114.968405,26.940813],[114.973804,26.945427],[114.979182,26.943757],[114.987039,26.938526],[114.992837,26.9396],[115.005085,26.950519],[115.014286,26.95392],[115.036765,26.965811],[115.042248,26.968953],[115.053571,26.987981],[115.064096,26.996768],[115.060882,27.010802],[115.057794,27.014857],[115.04647,27.024238],[115.038739,27.027597],[115.018908,27.033003],[115.012395,27.036719],[115.003782,27.04431],[114.993152,27.058219],[114.985463,27.05657],[114.978552,27.0519],[114.970086,27.040375],[114.9633,27.035984],[114.959372,27.0365],[114.953321,27.044827],[114.952082,27.051841],[114.95767,27.05341],[114.958195,27.059252],[114.950926,27.065192],[114.943279,27.064398],[114.935296,27.060583],[114.924792,27.061239],[114.913259,27.065053],[114.908259,27.057484],[114.902713,27.052437],[114.891915,27.051026],[114.886033,27.047946],[114.877987,27.04737],[114.874941,27.044032],[114.875697,27.037434],[114.86721,27.036003],[114.85534,27.031393],[114.843198,27.035606],[114.834942,27.035507],[114.821602,27.039282],[114.820614,27.044827],[114.822211,27.053589],[114.826475,27.061596],[114.839038,27.067139],[114.839668,27.077331],[114.836538,27.082655],[114.833576,27.092467],[114.820551,27.099737],[114.817589,27.102934],[114.817064,27.110282],[114.810698,27.119398],[114.809711,27.13018],[114.80656,27.133734],[114.804879,27.139909],[114.806665,27.146381],[114.802842,27.153587],[114.803661,27.162461],[114.807253,27.166788],[114.829606,27.178955],[114.83158,27.188382],[114.847714,27.202114],[114.854143,27.205111],[114.860592,27.205924],[114.867924,27.202154],[114.87763,27.202055],[114.889667,27.206321],[114.896369,27.204436],[114.92141,27.208186],[114.932628,27.214873],[114.933826,27.222849],[114.941095,27.231558],[114.949183,27.236338],[114.958195,27.237906],[114.961997,27.240484],[114.969035,27.248994],[114.967775,27.25661],[114.964666,27.261747],[114.958363,27.265178],[114.955191,27.27549],[114.958531,27.296746],[114.950863,27.302971],[114.95433,27.308205],[114.972943,27.313279],[114.975085,27.318077],[114.971031,27.319999],[114.958993,27.32099],[114.9483,27.320416],[114.928826,27.314528],[114.925696,27.314885],[114.927566,27.326798],[114.934477,27.334112],[114.941893,27.354643],[114.943006,27.361063],[114.937901,27.380103],[114.932418,27.38468],[114.929708,27.398229],[114.927166,27.416035],[114.917398,27.419204],[114.915843,27.421878],[114.922818,27.425521],[114.920927,27.430096],[114.923784,27.436967],[114.920822,27.439759],[114.907881,27.443204],[114.900213,27.446887],[114.904688,27.451777],[114.904121,27.456014],[114.900129,27.455955],[114.881642,27.446154],[114.875445,27.445263],[114.870361,27.447342],[114.870298,27.455856],[114.875256,27.466487],[114.874268,27.475632],[114.868806,27.47868],[114.871117,27.484757],[114.881201,27.480798],[114.884394,27.483252],[114.883827,27.489546],[114.880571,27.494197],[114.874289,27.498175],[114.872567,27.502984],[114.874941,27.505121],[114.877084,27.517845],[114.87992,27.524157],[114.877315,27.53666],[114.887945,27.542021],[114.889016,27.546433],[114.89431,27.553831],[114.891369,27.564017],[114.890592,27.574301],[114.882756,27.584664],[114.880949,27.592395]]]]}},{"type":"Feature","properties":{"adcode":360822,"name":"吉水县","center":[115.134569,27.213445],"centroid":[115.246722,27.194906],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":3,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.36035,27.412332],[115.347451,27.420174],[115.342493,27.425898],[115.3343,27.429165],[115.331401,27.441363],[115.321695,27.449085],[115.318922,27.456628],[115.310162,27.46326],[115.301464,27.464111],[115.290036,27.467575],[115.287788,27.472841],[115.288376,27.479531],[115.28136,27.498927],[115.281003,27.506249],[115.284112,27.512661],[115.280477,27.516579],[115.265394,27.511612],[115.260877,27.51553],[115.254491,27.525759],[115.252705,27.525739],[115.242201,27.513709],[115.231634,27.507219],[115.218987,27.49774],[115.212937,27.495365],[115.196383,27.499719],[115.184702,27.498353],[115.181488,27.503716],[115.170102,27.512957],[115.168736,27.517746],[115.164031,27.521703],[115.154493,27.515629],[115.148737,27.516301],[115.136216,27.510741],[115.145544,27.50051],[115.147855,27.496355],[115.143317,27.485172],[115.12754,27.470624],[115.121784,27.459954],[115.11775,27.45641],[115.106742,27.453124],[115.095986,27.455361],[115.091448,27.460073],[115.088801,27.467536],[115.077898,27.468427],[115.072709,27.465893],[115.06439,27.46712],[115.057478,27.465695],[115.049664,27.470525],[115.042479,27.478126],[115.036996,27.481907],[115.026765,27.485825],[115.008425,27.488873],[115.004623,27.487112],[114.999602,27.488398],[114.993068,27.495009],[114.992375,27.504745],[114.987102,27.516381],[114.979455,27.519626],[114.976073,27.525838],[114.977606,27.53116],[114.987123,27.539667],[114.983804,27.545384],[114.974938,27.546967],[114.972796,27.55031],[114.959897,27.552011],[114.953825,27.55393],[114.949414,27.559112],[114.941872,27.563364],[114.937376,27.561683],[114.930402,27.552268],[114.911705,27.54669],[114.905822,27.540755],[114.896159,27.542041],[114.891873,27.540379],[114.887945,27.542021],[114.877315,27.53666],[114.87992,27.524157],[114.877084,27.517845],[114.874941,27.505121],[114.872567,27.502984],[114.874289,27.498175],[114.880571,27.494197],[114.883827,27.489546],[114.884394,27.483252],[114.881201,27.480798],[114.871117,27.484757],[114.868806,27.47868],[114.874268,27.475632],[114.875256,27.466487],[114.870298,27.455856],[114.870361,27.447342],[114.875445,27.445263],[114.881642,27.446154],[114.900129,27.455955],[114.904121,27.456014],[114.904688,27.451777],[114.900213,27.446887],[114.907881,27.443204],[114.920822,27.439759],[114.923784,27.436967],[114.920927,27.430096],[114.922818,27.425521],[114.915843,27.421878],[114.917398,27.419204],[114.927166,27.416035],[114.929708,27.398229],[114.932418,27.38468],[114.937901,27.380103],[114.943006,27.361063],[114.941893,27.354643],[114.934477,27.334112],[114.927566,27.326798],[114.925696,27.314885],[114.928826,27.314528],[114.9483,27.320416],[114.958993,27.32099],[114.971031,27.319999],[114.975085,27.318077],[114.972943,27.313279],[114.95433,27.308205],[114.950863,27.302971],[114.958531,27.296746],[114.955191,27.27549],[114.958363,27.265178],[114.964666,27.261747],[114.967775,27.25661],[114.969035,27.248994],[114.973951,27.243182],[114.980947,27.24338],[114.98143,27.251076],[114.983951,27.26254],[114.980484,27.273685],[114.990568,27.27777],[114.994224,27.282529],[115.00185,27.287962],[115.011639,27.29056],[115.016975,27.28937],[115.022983,27.284195],[115.021975,27.279892],[115.024454,27.27194],[115.022941,27.266388],[115.025757,27.256094],[115.028845,27.25066],[115.034706,27.249033],[115.034223,27.242726],[115.03855,27.237886],[115.039496,27.229971],[115.04458,27.22634],[115.040735,27.222829],[115.043865,27.215785],[115.049643,27.213583],[115.05876,27.214754],[115.064894,27.204972],[115.07147,27.20271],[115.078024,27.203384],[115.079033,27.200011],[115.083339,27.202035],[115.081322,27.20519],[115.086133,27.20767],[115.093696,27.203603],[115.093675,27.200666],[115.101007,27.203801],[115.110839,27.202214],[115.11107,27.193204],[115.11483,27.189672],[115.108801,27.181853],[115.099557,27.177109],[115.091301,27.175422],[115.078507,27.16655],[115.068571,27.160774],[115.077541,27.144078],[115.070587,27.120609],[115.071071,27.111176],[115.079201,27.109369],[115.083297,27.106787],[115.0867,27.097651],[115.093801,27.092447],[115.09231,27.084224],[115.089684,27.079854],[115.08107,27.078999],[115.077373,27.074113],[115.081491,27.07008],[115.08689,27.069186],[115.088444,27.073556],[115.095692,27.076079],[115.105482,27.070894],[115.115943,27.073695],[115.113948,27.079933],[115.113822,27.08766],[115.108318,27.094334],[115.122666,27.104027],[115.131636,27.106549],[115.135733,27.103709],[115.13775,27.098485],[115.15214,27.085296],[115.159934,27.085376],[115.166888,27.09346],[115.170375,27.09489],[115.180123,27.094215],[115.187328,27.088594],[115.195164,27.086508],[115.200773,27.088733],[115.204471,27.092884],[115.208483,27.092944],[115.214765,27.088236],[115.219092,27.080748],[115.217412,27.073795],[115.218693,27.066742],[115.241529,27.04425],[115.245205,27.036699],[115.238315,27.02716],[115.232054,27.027219],[115.226046,27.023562],[115.22197,27.013744],[115.225857,27.007821],[115.232684,27.005773],[115.231907,26.997742],[115.228798,26.986848],[115.22176,26.984402],[115.223399,26.976986],[115.23239,26.970604],[115.233504,26.965533],[115.229827,26.963266],[115.219323,26.961476],[115.216298,26.957002],[115.215668,26.95034],[115.207307,26.946999],[115.215542,26.938068],[115.217244,26.931684],[115.221739,26.928859],[115.232516,26.926969],[115.244953,26.919927],[115.24802,26.91571],[115.252558,26.891636],[115.262978,26.878622],[115.261654,26.873826],[115.266444,26.869368],[115.272936,26.869169],[115.281423,26.863855],[115.285813,26.85663],[115.291423,26.853266],[115.313502,26.861407],[115.317493,26.864929],[115.324783,26.865387],[115.332955,26.868791],[115.341232,26.86073],[115.345644,26.851793],[115.345686,26.845204],[115.342262,26.839292],[115.344867,26.834952],[115.354614,26.827088],[115.3664,26.835589],[115.377135,26.834534],[115.386273,26.834972],[115.386799,26.846617],[115.377618,26.864392],[115.382954,26.867855],[115.388794,26.878025],[115.386504,26.886064],[115.39266,26.88891],[115.412239,26.885806],[115.432638,26.887696],[115.437911,26.885268],[115.44749,26.884472],[115.458057,26.886761],[115.460557,26.896053],[115.454549,26.904847],[115.454822,26.910498],[115.458856,26.914994],[115.465431,26.908588],[115.470809,26.907374],[115.47646,26.899814],[115.473939,26.896391],[115.484569,26.887318],[115.48646,26.883438],[115.491334,26.880851],[115.496775,26.873229],[115.513833,26.866343],[115.52356,26.867517],[115.535934,26.874303],[115.539064,26.882582],[115.547131,26.887756],[115.552404,26.888591],[115.561017,26.884373],[115.572025,26.887975],[115.57755,26.895735],[115.576941,26.903872],[115.56963,26.903116],[115.562488,26.906956],[115.568874,26.916625],[115.567635,26.922414],[115.57316,26.925875],[115.583643,26.925875],[115.59902,26.936318],[115.610239,26.939938],[115.617676,26.949465],[115.622738,26.951951],[115.626625,26.957559],[115.627675,26.96261],[115.625364,26.968655],[115.625827,26.976231],[115.624041,26.983289],[115.619671,26.990983],[115.610344,26.997364],[115.60381,27.006131],[115.60673,27.011041],[115.605974,27.018315],[115.608201,27.032168],[115.610785,27.036003],[115.607718,27.037275],[115.607571,27.042601],[115.603054,27.044886],[115.605827,27.049675],[115.598726,27.051503],[115.595764,27.05496],[115.578097,27.064676],[115.575849,27.0701],[115.565408,27.072464],[115.55982,27.075066],[115.559421,27.079079],[115.548055,27.089627],[115.542677,27.085138],[115.537173,27.083092],[115.529505,27.084502],[115.526984,27.088713],[115.530115,27.107999],[115.5294,27.113202],[115.525199,27.118643],[115.520052,27.116975],[115.51751,27.108376],[115.511733,27.10637],[115.502594,27.113301],[115.503077,27.117769],[115.49772,27.116637],[115.502615,27.120907],[115.494737,27.132423],[115.490515,27.14521],[115.488918,27.153528],[115.480641,27.149716],[115.47541,27.149438],[115.468687,27.144118],[115.462763,27.145031],[115.457616,27.150689],[115.447511,27.151205],[115.446062,27.148783],[115.427953,27.150014],[115.423751,27.146818],[115.420243,27.15319],[115.42331,27.153171],[115.42644,27.159642],[115.413563,27.160297],[115.404004,27.166093],[115.400811,27.162838],[115.393668,27.161528],[115.37329,27.151086],[115.366358,27.160992],[115.360539,27.162441],[115.355119,27.16788],[115.34993,27.188918],[115.353648,27.200547],[115.346463,27.205051],[115.34369,27.20388],[115.330371,27.210607],[115.32806,27.213524],[115.326674,27.221341],[115.324321,27.224614],[115.324825,27.238104],[115.316863,27.239572],[115.314216,27.244551],[115.313943,27.2531],[115.315393,27.258653],[115.311023,27.267062],[115.311527,27.270909],[115.309006,27.279317],[115.300246,27.287209],[115.302725,27.297816],[115.289028,27.301781],[115.284154,27.306876],[115.28825,27.313299],[115.285919,27.318691],[115.286213,27.334905],[115.280351,27.339126],[115.27949,27.35276],[115.280225,27.365303],[115.287032,27.370296],[115.296359,27.37204],[115.311065,27.379806],[115.317619,27.380401],[115.326317,27.377033],[115.328964,27.377667],[115.338964,27.38678],[115.347094,27.390028],[115.344657,27.396149],[115.351232,27.40643],[115.36035,27.412332]]]]}},{"type":"Feature","properties":{"adcode":360823,"name":"峡江县","center":[115.319331,27.580862],"centroid":[115.208061,27.583725],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":4,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.252936,27.761878],[115.240079,27.760753],[115.225626,27.75479],[115.203778,27.75019],[115.198105,27.750605],[115.191152,27.743003],[115.17256,27.733287],[115.165816,27.73311],[115.158842,27.724183],[115.160039,27.717211],[115.154682,27.713755],[115.13922,27.70935],[115.135859,27.710773],[115.13546,27.71891],[115.139031,27.726356],[115.135985,27.734334],[115.129094,27.741482],[115.123128,27.742134],[115.11859,27.738698],[115.11899,27.730996],[115.116889,27.727817],[115.111217,27.726553],[115.110271,27.718574],[115.102835,27.71095],[115.09962,27.712471],[115.098213,27.708679],[115.08941,27.704649],[115.082898,27.704057],[115.079117,27.716974],[115.069432,27.721517],[115.058529,27.732576],[115.055294,27.731569],[115.054621,27.723393],[115.046218,27.720905],[115.029769,27.712866],[115.024937,27.711977],[115.023068,27.708363],[115.02666,27.700363],[115.024475,27.695365],[115.015589,27.689201],[115.017206,27.677189],[115.015169,27.668199],[115.019937,27.665136],[115.019223,27.654367],[115.009959,27.650632],[114.997648,27.655493],[114.992522,27.659426],[114.986997,27.668081],[114.980316,27.674344],[114.975989,27.67472],[114.966031,27.664465],[114.960758,27.661125],[114.962838,27.65822],[114.968195,27.657785],[114.971325,27.651224],[114.954078,27.639406],[114.9437,27.63986],[114.926095,27.630966],[114.926368,27.624146],[114.921242,27.622703],[114.913154,27.615231],[114.90828,27.613274],[114.899142,27.61272],[114.89139,27.609992],[114.887482,27.606512],[114.88744,27.601352],[114.882525,27.597675],[114.880949,27.592395],[114.882756,27.584664],[114.890592,27.574301],[114.891369,27.564017],[114.89431,27.553831],[114.889016,27.546433],[114.887945,27.542021],[114.891873,27.540379],[114.896159,27.542041],[114.905822,27.540755],[114.911705,27.54669],[114.930402,27.552268],[114.937376,27.561683],[114.941872,27.563364],[114.949414,27.559112],[114.953825,27.55393],[114.959897,27.552011],[114.972796,27.55031],[114.974938,27.546967],[114.983804,27.545384],[114.987123,27.539667],[114.977606,27.53116],[114.976073,27.525838],[114.979455,27.519626],[114.987102,27.516381],[114.992375,27.504745],[114.993068,27.495009],[114.999602,27.488398],[115.004623,27.487112],[115.008425,27.488873],[115.026765,27.485825],[115.036996,27.481907],[115.042479,27.478126],[115.049664,27.470525],[115.057478,27.465695],[115.06439,27.46712],[115.072709,27.465893],[115.077898,27.468427],[115.088801,27.467536],[115.091448,27.460073],[115.095986,27.455361],[115.106742,27.453124],[115.11775,27.45641],[115.121784,27.459954],[115.12754,27.470624],[115.143317,27.485172],[115.147855,27.496355],[115.145544,27.50051],[115.136216,27.510741],[115.148737,27.516301],[115.154493,27.515629],[115.164031,27.521703],[115.168736,27.517746],[115.170102,27.512957],[115.181488,27.503716],[115.184702,27.498353],[115.196383,27.499719],[115.212937,27.495365],[115.218987,27.49774],[115.231634,27.507219],[115.242201,27.513709],[115.252705,27.525739],[115.254491,27.525759],[115.260877,27.51553],[115.265394,27.511612],[115.280477,27.516579],[115.284112,27.512661],[115.281003,27.506249],[115.28136,27.498927],[115.288376,27.479531],[115.287788,27.472841],[115.290036,27.467575],[115.301464,27.464111],[115.310162,27.46326],[115.318922,27.456628],[115.321695,27.449085],[115.331401,27.441363],[115.3343,27.429165],[115.342493,27.425898],[115.347451,27.420174],[115.36035,27.412332],[115.368522,27.416669],[115.377954,27.423818],[115.381883,27.433759],[115.391588,27.435561],[115.398941,27.43372],[115.40747,27.440076],[115.425327,27.437324],[115.438646,27.447263],[115.442764,27.452866],[115.452616,27.460409],[115.456587,27.458231],[115.463835,27.459756],[115.469213,27.464962],[115.481775,27.470822],[115.486061,27.474365],[115.491313,27.465734],[115.497594,27.468763],[115.501292,27.474365],[115.514422,27.475315],[115.525325,27.479967],[115.528644,27.485331],[115.535051,27.491347],[115.538161,27.499145],[115.532699,27.501658],[115.530346,27.506328],[115.536522,27.517152],[115.535493,27.519566],[115.528917,27.521525],[115.524779,27.51921],[115.510346,27.519368],[115.505682,27.527263],[115.503266,27.536087],[115.495725,27.543505],[115.488393,27.547066],[115.490725,27.553593],[115.480347,27.573906],[115.484653,27.573688],[115.485935,27.578039],[115.483456,27.582133],[115.476649,27.586404],[115.468834,27.586345],[115.462574,27.589192],[115.45936,27.586977],[115.450978,27.58763],[115.443415,27.592435],[115.439844,27.597714],[115.442995,27.604021],[115.442406,27.60762],[115.427449,27.613748],[115.413857,27.614974],[115.404025,27.633061],[115.391609,27.636263],[115.380601,27.634583],[115.371736,27.630749],[115.366652,27.626103],[115.361505,27.625313],[115.354909,27.631005],[115.349804,27.626598],[115.345518,27.625886],[115.341989,27.628732],[115.336001,27.629563],[115.327829,27.626993],[115.321401,27.629563],[115.319216,27.63312],[115.312746,27.651481],[115.313418,27.661797],[115.321884,27.669325],[115.326023,27.674601],[115.338438,27.685547],[115.342409,27.691947],[115.3143,27.703365],[115.30449,27.714901],[115.299112,27.719858],[115.28262,27.728232],[115.269175,27.732043],[115.260919,27.732438],[115.256087,27.735973],[115.254533,27.740317],[115.252936,27.761878]]]]}},{"type":"Feature","properties":{"adcode":360824,"name":"新干县","center":[115.399294,27.755758],"centroid":[115.501718,27.732716],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":5,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.593306,27.518458],[115.591941,27.523702],[115.604819,27.533416],[115.603558,27.539746],[115.606289,27.543208],[115.606919,27.561228],[115.60902,27.567953],[115.607025,27.575765],[115.611436,27.582152],[115.621982,27.593246],[115.6236,27.597556],[115.629797,27.604476],[115.63465,27.612068],[115.634608,27.616259],[115.64299,27.625313],[115.652002,27.636955],[115.663389,27.644979],[115.663557,27.649545],[115.673073,27.650829],[115.681918,27.657054],[115.694733,27.677367],[115.707211,27.689814],[115.712421,27.692362],[115.724837,27.708876],[115.729816,27.72128],[115.73511,27.729614],[115.730551,27.748413],[115.728093,27.751138],[115.73032,27.757969],[115.725383,27.762628],[115.722883,27.761937],[115.710425,27.766616],[115.697716,27.769716],[115.695426,27.771966],[115.690489,27.784461],[115.690426,27.790442],[115.686792,27.798573],[115.677569,27.811638],[115.677254,27.816492],[115.673872,27.821307],[115.661561,27.824109],[115.654166,27.828351],[115.645406,27.82103],[115.636688,27.824089],[115.630133,27.821839],[115.613348,27.827956],[115.604272,27.835335],[115.591164,27.841806],[115.586038,27.852104],[115.581185,27.85382],[115.578223,27.863307],[115.571857,27.860112],[115.560933,27.861098],[115.551627,27.865319],[115.54356,27.870546],[115.53169,27.884785],[115.524232,27.885396],[115.510577,27.896754],[115.510388,27.900244],[115.516186,27.906711],[115.513833,27.915642],[115.521249,27.922601],[115.529484,27.925144],[115.53711,27.940263],[115.527447,27.949053],[115.510892,27.948344],[115.500745,27.953409],[115.485494,27.957291],[115.475368,27.952207],[115.472448,27.94724],[115.464465,27.946432],[115.464297,27.941525],[115.472343,27.938824],[115.474549,27.935828],[115.471229,27.926209],[115.466103,27.922404],[115.45999,27.921596],[115.451587,27.92408],[115.450389,27.932339],[115.439339,27.935947],[115.443982,27.955104],[115.439423,27.954946],[115.439255,27.959853],[115.428457,27.960306],[115.426546,27.95534],[115.429634,27.944264],[115.425264,27.943693],[115.413374,27.954749],[115.393605,27.945565],[115.393605,27.935927],[115.404361,27.931768],[115.408185,27.928673],[115.405643,27.913001],[115.402681,27.908762],[115.391252,27.90336],[115.382618,27.89636],[115.382492,27.893402],[115.392198,27.883621],[115.401861,27.881708],[115.407029,27.87875],[115.408248,27.87522],[115.40371,27.870506],[115.392534,27.869639],[115.388668,27.85885],[115.382597,27.864727],[115.380328,27.86315],[115.371421,27.863623],[115.360539,27.861552],[115.362471,27.852597],[115.360665,27.84585],[115.352997,27.837071],[115.350812,27.830896],[115.331632,27.816235],[115.324342,27.812032],[115.319237,27.798218],[115.308901,27.787363],[115.302305,27.78379],[115.296443,27.776625],[115.280204,27.767386],[115.262222,27.764543],[115.252936,27.761878],[115.254533,27.740317],[115.256087,27.735973],[115.260919,27.732438],[115.269175,27.732043],[115.28262,27.728232],[115.299112,27.719858],[115.30449,27.714901],[115.3143,27.703365],[115.342409,27.691947],[115.338438,27.685547],[115.326023,27.674601],[115.321884,27.669325],[115.313418,27.661797],[115.312746,27.651481],[115.319216,27.63312],[115.321401,27.629563],[115.327829,27.626993],[115.336001,27.629563],[115.341989,27.628732],[115.345518,27.625886],[115.349804,27.626598],[115.354909,27.631005],[115.361505,27.625313],[115.366652,27.626103],[115.371736,27.630749],[115.380601,27.634583],[115.391609,27.636263],[115.404025,27.633061],[115.413857,27.614974],[115.427449,27.613748],[115.442406,27.60762],[115.442995,27.604021],[115.439844,27.597714],[115.443415,27.592435],[115.450978,27.58763],[115.45936,27.586977],[115.462574,27.589192],[115.468834,27.586345],[115.476649,27.586404],[115.483456,27.582133],[115.485935,27.578039],[115.484653,27.573688],[115.480347,27.573906],[115.490725,27.553593],[115.488393,27.547066],[115.495725,27.543505],[115.503266,27.536087],[115.505682,27.527263],[115.510346,27.519368],[115.524779,27.51921],[115.528917,27.521525],[115.535493,27.519566],[115.536522,27.517152],[115.530346,27.506328],[115.532699,27.501658],[115.538161,27.499145],[115.559105,27.507397],[115.570639,27.506724],[115.577529,27.511454],[115.582382,27.512225],[115.593306,27.518458]]]]}},{"type":"Feature","properties":{"adcode":360825,"name":"永丰县","center":[115.435559,27.321087],"centroid":[115.586677,27.091665],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":6,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.593306,27.518458],[115.582382,27.512225],[115.577529,27.511454],[115.570639,27.506724],[115.559105,27.507397],[115.538161,27.499145],[115.535051,27.491347],[115.528644,27.485331],[115.525325,27.479967],[115.514422,27.475315],[115.501292,27.474365],[115.497594,27.468763],[115.491313,27.465734],[115.486061,27.474365],[115.481775,27.470822],[115.469213,27.464962],[115.463835,27.459756],[115.456587,27.458231],[115.452616,27.460409],[115.442764,27.452866],[115.438646,27.447263],[115.425327,27.437324],[115.40747,27.440076],[115.398941,27.43372],[115.391588,27.435561],[115.381883,27.433759],[115.377954,27.423818],[115.368522,27.416669],[115.36035,27.412332],[115.351232,27.40643],[115.344657,27.396149],[115.347094,27.390028],[115.338964,27.38678],[115.328964,27.377667],[115.326317,27.377033],[115.317619,27.380401],[115.311065,27.379806],[115.296359,27.37204],[115.287032,27.370296],[115.280225,27.365303],[115.27949,27.35276],[115.280351,27.339126],[115.286213,27.334905],[115.285919,27.318691],[115.28825,27.313299],[115.284154,27.306876],[115.289028,27.301781],[115.302725,27.297816],[115.300246,27.287209],[115.309006,27.279317],[115.311527,27.270909],[115.311023,27.267062],[115.315393,27.258653],[115.313943,27.2531],[115.314216,27.244551],[115.316863,27.239572],[115.324825,27.238104],[115.324321,27.224614],[115.326674,27.221341],[115.32806,27.213524],[115.330371,27.210607],[115.34369,27.20388],[115.346463,27.205051],[115.353648,27.200547],[115.34993,27.188918],[115.355119,27.16788],[115.360539,27.162441],[115.366358,27.160992],[115.37329,27.151086],[115.393668,27.161528],[115.400811,27.162838],[115.404004,27.166093],[115.413563,27.160297],[115.42644,27.159642],[115.42331,27.153171],[115.420243,27.15319],[115.423751,27.146818],[115.427953,27.150014],[115.446062,27.148783],[115.447511,27.151205],[115.457616,27.150689],[115.462763,27.145031],[115.468687,27.144118],[115.47541,27.149438],[115.480641,27.149716],[115.488918,27.153528],[115.490515,27.14521],[115.494737,27.132423],[115.502615,27.120907],[115.49772,27.116637],[115.503077,27.117769],[115.502594,27.113301],[115.511733,27.10637],[115.51751,27.108376],[115.520052,27.116975],[115.525199,27.118643],[115.5294,27.113202],[115.530115,27.107999],[115.526984,27.088713],[115.529505,27.084502],[115.537173,27.083092],[115.542677,27.085138],[115.548055,27.089627],[115.559421,27.079079],[115.55982,27.075066],[115.565408,27.072464],[115.575849,27.0701],[115.578097,27.064676],[115.595764,27.05496],[115.598726,27.051503],[115.605827,27.049675],[115.603054,27.044886],[115.607571,27.042601],[115.607718,27.037275],[115.610785,27.036003],[115.608201,27.032168],[115.605974,27.018315],[115.60673,27.011041],[115.60381,27.006131],[115.610344,26.997364],[115.619671,26.990983],[115.624041,26.983289],[115.625827,26.976231],[115.625364,26.968655],[115.627675,26.96261],[115.626625,26.957559],[115.622738,26.951951],[115.617676,26.949465],[115.610239,26.939938],[115.59902,26.936318],[115.583643,26.925875],[115.57316,26.925875],[115.567635,26.922414],[115.568874,26.916625],[115.562488,26.906956],[115.56963,26.903116],[115.576941,26.903872],[115.57755,26.895735],[115.572025,26.887975],[115.561017,26.884373],[115.552404,26.888591],[115.547131,26.887756],[115.539064,26.882582],[115.535934,26.874303],[115.52356,26.867517],[115.513833,26.866343],[115.496775,26.873229],[115.491334,26.880851],[115.48646,26.883438],[115.484569,26.887318],[115.473939,26.896391],[115.47646,26.899814],[115.470809,26.907374],[115.465431,26.908588],[115.458856,26.914994],[115.454822,26.910498],[115.454549,26.904847],[115.460557,26.896053],[115.458057,26.886761],[115.44749,26.884472],[115.437911,26.885268],[115.432638,26.887696],[115.412239,26.885806],[115.39266,26.88891],[115.386504,26.886064],[115.388794,26.878025],[115.382954,26.867855],[115.377618,26.864392],[115.386799,26.846617],[115.386273,26.834972],[115.383752,26.829019],[115.3885,26.820418],[115.379761,26.815122],[115.38203,26.809049],[115.390454,26.802178],[115.390727,26.793894],[115.39745,26.791863],[115.401441,26.795268],[115.41268,26.795049],[115.424109,26.799689],[115.429403,26.795049],[115.432407,26.787322],[115.433835,26.778698],[115.444549,26.774156],[115.449507,26.769097],[115.452742,26.759694],[115.46957,26.760153],[115.472028,26.75824],[115.469927,26.753837],[115.474822,26.750729],[115.486544,26.749096],[115.492006,26.744792],[115.493855,26.739712],[115.499128,26.734551],[115.499527,26.729689],[115.50564,26.724548],[115.511396,26.713946],[115.508749,26.710398],[115.502363,26.71004],[115.497279,26.704439],[115.495388,26.698799],[115.487237,26.68955],[115.488645,26.681835],[115.49709,26.677071],[115.501859,26.677489],[115.508182,26.68656],[115.514001,26.687457],[115.520304,26.693756],[115.526732,26.69541],[115.534736,26.687696],[115.535556,26.677589],[115.534652,26.671987],[115.537425,26.656435],[115.54253,26.651411],[115.554652,26.646306],[115.565072,26.649835],[115.570156,26.647363],[115.586164,26.650673],[115.591857,26.650533],[115.592382,26.660663],[115.602886,26.660264],[115.607067,26.657951],[115.615092,26.664212],[115.618789,26.662218],[115.643977,26.661161],[115.649965,26.653584],[115.657822,26.651211],[115.659565,26.647961],[115.665721,26.648659],[115.670321,26.641839],[115.674796,26.64491],[115.67362,26.649437],[115.675762,26.652846],[115.682989,26.654182],[115.687695,26.659546],[115.687779,26.666265],[115.698808,26.672685],[115.698451,26.679044],[115.704417,26.685344],[115.715131,26.68941],[115.714291,26.692281],[115.701728,26.700752],[115.704312,26.705815],[115.708661,26.708306],[115.716833,26.708645],[115.721518,26.705516],[115.729354,26.70721],[115.731559,26.711295],[115.72948,26.720981],[115.728072,26.74545],[115.724669,26.749574],[115.724501,26.758639],[115.71803,26.759396],[115.712484,26.754833],[115.705342,26.754236],[115.693157,26.760232],[115.687443,26.765073],[115.685195,26.764097],[115.678073,26.767583],[115.675048,26.772782],[115.676876,26.776706],[115.69114,26.780829],[115.688472,26.786744],[115.688682,26.792719],[115.696014,26.796682],[115.695825,26.800426],[115.687401,26.803214],[115.687191,26.80877],[115.691119,26.815162],[115.688073,26.823066],[115.694039,26.830492],[115.705321,26.841302],[115.705531,26.849723],[115.708136,26.852728],[115.718072,26.850599],[115.721791,26.84821],[115.728933,26.839351],[115.740467,26.834076],[115.748828,26.832623],[115.753072,26.827884],[115.757021,26.817272],[115.765025,26.811737],[115.785424,26.80411],[115.787651,26.808252],[115.789856,26.8245],[115.79347,26.828283],[115.798911,26.83971],[115.804646,26.855376],[115.807062,26.857864],[115.823196,26.858859],[115.826032,26.861327],[115.827335,26.873089],[115.832839,26.883139],[115.835486,26.897506],[115.837901,26.899714],[115.84641,26.900311],[115.86454,26.909682],[115.870086,26.91561],[115.874287,26.916923],[115.88248,26.924642],[115.893236,26.938367],[115.90145,26.945547],[115.904244,26.951076],[115.91145,26.955053],[115.920463,26.956803],[115.925526,26.95388],[115.928929,26.955272],[115.935357,26.965056],[115.930925,26.971976],[115.911345,26.985118],[115.900673,26.982553],[115.894749,26.979273],[115.888215,26.982633],[115.883447,26.989949],[115.887417,26.997981],[115.885379,26.999869],[115.874728,26.997106],[115.866199,27.000823],[115.86101,27.005873],[115.859876,27.013267],[115.862859,27.021436],[115.856409,27.027319],[115.85351,27.035884],[115.852607,27.056013],[115.845653,27.056272],[115.848111,27.06102],[115.84809,27.068351],[115.842964,27.07304],[115.825843,27.08182],[115.825045,27.088892],[115.821599,27.09497],[115.818994,27.107065],[115.814163,27.110481],[115.798911,27.112447],[115.792398,27.115267],[115.782756,27.113738],[115.773659,27.110243],[115.755656,27.110302],[115.741622,27.104245],[115.727232,27.100531],[115.718408,27.100352],[115.715593,27.110203],[115.711686,27.114572],[115.698493,27.12043],[115.695741,27.127182],[115.687842,27.129942],[115.679418,27.138201],[115.676288,27.144793],[115.675216,27.154501],[115.670721,27.164009],[115.665216,27.169091],[115.666981,27.179094],[115.662674,27.182845],[115.659502,27.191676],[115.654502,27.193324],[115.649524,27.18989],[115.639713,27.188402],[115.638368,27.197173],[115.630049,27.213305],[115.629881,27.221202],[115.627591,27.228046],[115.628095,27.23612],[115.625869,27.243718],[115.627948,27.24707],[115.641835,27.254924],[115.645049,27.260815],[115.649797,27.260021],[115.656855,27.264325],[115.670805,27.265753],[115.675804,27.263909],[115.682632,27.267359],[115.689249,27.268291],[115.695258,27.27202],[115.692632,27.278861],[115.693472,27.285325],[115.686434,27.289965],[115.68425,27.294723],[115.685069,27.301742],[115.681372,27.314092],[115.681918,27.324122],[115.677254,27.332506],[115.676729,27.336867],[115.679859,27.346875],[115.682737,27.34848],[115.683367,27.356307],[115.689712,27.365284],[115.696833,27.365303],[115.701224,27.369365],[115.702001,27.384323],[115.696119,27.401161],[115.704333,27.411124],[115.712589,27.415283],[115.719816,27.425086],[115.720467,27.430967],[115.724732,27.439363],[115.713283,27.452272],[115.702716,27.455242],[115.695636,27.451817],[115.683829,27.448115],[115.675951,27.451203],[115.66841,27.446669],[115.655196,27.449303],[115.651057,27.451302],[115.638915,27.464448],[115.630721,27.469119],[115.627087,27.479551],[115.619944,27.484084],[115.618978,27.488992],[115.614987,27.495306],[115.610239,27.498809],[115.608747,27.50522],[115.60463,27.511533],[115.593306,27.518458]]]]}},{"type":"Feature","properties":{"adcode":360826,"name":"泰和县","center":[114.901393,26.790164],"centroid":[114.934187,26.737471],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":7,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.434489,26.697842],[114.448585,26.702606],[114.456421,26.702526],[114.469572,26.697025],[114.475727,26.688434],[114.481147,26.687756],[114.486063,26.682792],[114.488626,26.674938],[114.499718,26.675915],[114.498752,26.685623],[114.492071,26.700911],[114.498731,26.703144],[114.508374,26.711176],[114.517008,26.707828],[114.515747,26.699596],[114.520285,26.697324],[114.521483,26.693377],[114.527848,26.68963],[114.533898,26.693696],[114.541797,26.690527],[114.547175,26.683789],[114.550557,26.683709],[114.55728,26.699217],[114.558667,26.706731],[114.57041,26.711275],[114.573708,26.71572],[114.580893,26.716776],[114.587027,26.725405],[114.59583,26.72939],[114.598687,26.725106],[114.61043,26.730665],[114.614632,26.72939],[114.615241,26.720582],[114.618266,26.714325],[114.624484,26.711455],[114.6294,26.70422],[114.637299,26.70434],[114.652152,26.699975],[114.644442,26.694593],[114.642908,26.685424],[114.640471,26.681277],[114.653013,26.677968],[114.656185,26.671947],[114.66858,26.658928],[114.674651,26.657153],[114.684063,26.662178],[114.687298,26.658469],[114.69005,26.659765],[114.69713,26.655339],[114.69818,26.666764],[114.702928,26.669814],[114.718747,26.685942],[114.724482,26.690447],[114.723285,26.702087],[114.729314,26.704838],[114.73736,26.711634],[114.744061,26.709342],[114.745679,26.698181],[114.754271,26.703941],[114.758389,26.708505],[114.766288,26.709103],[114.76841,26.707469],[114.766876,26.691842],[114.770195,26.685743],[114.77904,26.683629],[114.78238,26.68028],[114.784985,26.669475],[114.78927,26.666066],[114.788556,26.662058],[114.802884,26.655179],[114.812379,26.657074],[114.821013,26.668458],[114.829942,26.678646],[114.831349,26.684327],[114.8299,26.699417],[114.839836,26.700314],[114.847819,26.702645],[114.853471,26.69828],[114.86305,26.697025],[114.866811,26.694852],[114.8645,26.685663],[114.867336,26.682354],[114.873743,26.68662],[114.873911,26.693836],[114.878869,26.692799],[114.879373,26.68335],[114.890339,26.674898],[114.890655,26.670532],[114.887293,26.660922],[114.879646,26.65825],[114.87305,26.657971],[114.866643,26.649357],[114.878491,26.638489],[114.880739,26.633523],[114.882167,26.622992],[114.911494,26.608132],[114.918385,26.600372],[114.913511,26.594627],[114.912104,26.586826],[114.920297,26.583953],[114.920402,26.578386],[114.923658,26.571163],[114.92475,26.561585],[114.923574,26.556975],[114.929036,26.548992],[114.940548,26.552165],[114.940843,26.548114],[114.948363,26.542006],[114.956746,26.539711],[114.965233,26.531547],[114.981241,26.539511],[114.987732,26.532046],[114.987669,26.523403],[114.990211,26.521806],[114.998236,26.523203],[115.00624,26.518751],[115.011765,26.511125],[115.017353,26.508869],[115.028383,26.498367],[115.02813,26.49619],[115.020694,26.488503],[115.014349,26.487444],[115.014328,26.482872],[115.017521,26.480236],[115.020063,26.472946],[115.028614,26.465177],[115.034916,26.456708],[115.039223,26.454851],[115.042227,26.449697],[115.045945,26.449757],[115.047794,26.454471],[115.051785,26.454351],[115.0621,26.447979],[115.073592,26.457248],[115.075902,26.46274],[115.081701,26.467814],[115.087163,26.47722],[115.096154,26.487724],[115.114935,26.503977],[115.126973,26.507671],[115.131973,26.511405],[115.141657,26.513102],[115.165879,26.522764],[115.185123,26.520668],[115.192601,26.522804],[115.195521,26.51927],[115.205248,26.518172],[115.217307,26.513541],[115.226928,26.517074],[115.230899,26.521566],[115.230794,26.527415],[115.226676,26.531667],[115.223987,26.527215],[115.218714,26.532066],[115.235352,26.558891],[115.239617,26.563381],[115.251403,26.572241],[115.25615,26.573478],[115.257768,26.582397],[115.269112,26.603325],[115.27886,26.606297],[115.283923,26.611184],[115.286003,26.620399],[115.292767,26.62742],[115.302074,26.632566],[115.298502,26.647064],[115.299637,26.65486],[115.309573,26.656156],[115.317346,26.661719],[115.32888,26.662896],[115.33493,26.672266],[115.332955,26.679961],[115.328901,26.688613],[115.323481,26.690547],[115.324699,26.692958],[115.320729,26.696287],[115.319048,26.701709],[115.321401,26.70434],[115.317115,26.71291],[115.307452,26.715321],[115.302536,26.722475],[115.301695,26.727836],[115.304279,26.736265],[115.294175,26.740887],[115.286822,26.752861],[115.276339,26.757822],[115.262684,26.766129],[115.237831,26.780052],[115.219828,26.784036],[115.213819,26.789294],[115.208714,26.799251],[115.208294,26.805205],[115.203525,26.815759],[115.197832,26.816316],[115.187938,26.821434],[115.183001,26.82655],[115.173337,26.827526],[115.163148,26.830353],[115.1613,26.834434],[115.156678,26.831806],[115.14985,26.834594],[115.138926,26.836206],[115.138128,26.841203],[115.132729,26.850101],[115.127813,26.852629],[115.112057,26.850141],[115.103255,26.853266],[115.101511,26.863477],[115.096049,26.870522],[115.090314,26.880851],[115.085335,26.88489],[115.085083,26.89086],[115.091007,26.895615],[115.093654,26.902758],[115.091196,26.91008],[115.094221,26.914337],[115.094726,26.920186],[115.085776,26.920246],[115.083885,26.928581],[115.075356,26.937392],[115.060651,26.941072],[115.05563,26.95028],[115.050693,26.953005],[115.047038,26.961198],[115.036765,26.965811],[115.014286,26.95392],[115.005085,26.950519],[114.992837,26.9396],[114.987039,26.938526],[114.979182,26.943757],[114.973804,26.945427],[114.968405,26.940813],[114.964035,26.941052],[114.957082,26.944771],[114.949603,26.944393],[114.943048,26.938387],[114.936641,26.936119],[114.93578,26.931445],[114.94267,26.925776],[114.934078,26.919927],[114.931788,26.915213],[114.923469,26.912686],[114.916221,26.917759],[114.910024,26.917381],[114.901978,26.911353],[114.895697,26.914596],[114.881894,26.916923],[114.875718,26.907673],[114.870361,26.903176],[114.863134,26.903574],[114.862084,26.906658],[114.866811,26.923309],[114.873575,26.92496],[114.874184,26.931962],[114.868806,26.936716],[114.862525,26.936597],[114.858534,26.947217],[114.849815,26.949266],[114.849983,26.956644],[114.837652,26.962292],[114.829354,26.964757],[114.822841,26.962292],[114.814144,26.963564],[114.811266,26.95728],[114.794732,26.947715],[114.80261,26.939441],[114.802905,26.935085],[114.794753,26.931803],[114.788115,26.924682],[114.78822,26.918614],[114.784271,26.917142],[114.77946,26.925637],[114.767149,26.928163],[114.763893,26.923647],[114.749061,26.92134],[114.7432,26.922951],[114.734986,26.916983],[114.725953,26.917202],[114.720953,26.91943],[114.713348,26.915252],[114.706541,26.909742],[114.699945,26.901783],[114.694945,26.889288],[114.684252,26.885109],[114.675765,26.889925],[114.656584,26.889586],[114.651059,26.886144],[114.648748,26.877786],[114.650009,26.870283],[114.64858,26.867159],[114.641669,26.865367],[114.640618,26.86075],[114.643875,26.854938],[114.641648,26.850579],[114.635114,26.844866],[114.631837,26.83543],[114.620367,26.826909],[114.617237,26.820956],[114.613539,26.819781],[114.591691,26.828302],[114.587174,26.830811],[114.568393,26.833499],[114.563162,26.837759],[114.550936,26.841402],[114.543814,26.841163],[114.537911,26.843751],[114.531713,26.849086],[114.517344,26.849743],[114.508983,26.846777],[114.500895,26.850758],[114.49413,26.849782],[114.486609,26.842557],[114.479887,26.839989],[114.48371,26.828681],[114.481105,26.822847],[114.468648,26.822688],[114.457976,26.816356],[114.453501,26.812254],[114.451589,26.813589],[114.446064,26.80636],[114.439426,26.802039],[114.436421,26.805046],[114.431127,26.803533],[114.426716,26.79943],[114.427073,26.794691],[114.43264,26.790827],[114.430434,26.784354],[114.433459,26.778658],[114.437304,26.776706],[114.435518,26.771905],[114.438417,26.771089],[114.449677,26.77563],[114.460328,26.768459],[114.469152,26.766348],[114.47995,26.759157],[114.48142,26.751945],[114.476505,26.748379],[114.480517,26.743198],[114.479635,26.739592],[114.475244,26.736982],[114.474593,26.742521],[114.467408,26.743995],[114.46537,26.75071],[114.458312,26.753598],[114.461064,26.744812],[114.466043,26.740967],[114.467555,26.735428],[114.466022,26.730048],[114.462891,26.729609],[114.459845,26.73485],[114.456715,26.728653],[114.451778,26.729171],[114.449425,26.732857],[114.444236,26.730347],[114.446547,26.718609],[114.438753,26.719088],[114.439762,26.712132],[114.431758,26.714325],[114.427619,26.71841],[114.42577,26.716557],[114.427745,26.709621],[114.431043,26.706751],[114.434489,26.697842]]]]}},{"type":"Feature","properties":{"adcode":360827,"name":"遂川县","center":[114.51689,26.323705],"centroid":[114.364445,26.338219],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":8,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.088656,26.411478],[114.085442,26.406263],[114.077543,26.406183],[114.076472,26.404165],[114.071682,26.40984],[114.062523,26.406103],[114.057649,26.398789],[114.049897,26.391115],[114.042985,26.390255],[114.042313,26.385878],[114.036284,26.377324],[114.03057,26.376624],[114.031872,26.369289],[114.039666,26.361413],[114.037523,26.354476],[114.039771,26.345679],[114.047586,26.337381],[114.038511,26.329903],[114.035632,26.323404],[114.038868,26.312125],[114.041788,26.309545],[114.033931,26.304225],[114.025738,26.296805],[114.021599,26.288544],[114.021221,26.283043],[114.025402,26.270239],[114.029309,26.266378],[114.016767,26.259255],[114.011263,26.258495],[114.002713,26.251352],[113.989121,26.24669],[113.978911,26.237745],[113.980928,26.231881],[113.980193,26.226457],[113.971537,26.219332],[113.973533,26.208263],[113.970067,26.202118],[113.961517,26.197113],[113.949479,26.192669],[113.946118,26.184521],[113.95179,26.177873],[113.95116,26.169584],[113.944626,26.1661],[113.9445,26.163757],[113.955445,26.156087],[113.957609,26.151882],[113.962672,26.15084],[113.966495,26.154125],[113.972168,26.154745],[113.985466,26.16638],[113.992104,26.167822],[114.003848,26.176552],[114.005822,26.180677],[114.0087,26.179555],[114.013385,26.18408],[114.02454,26.179876],[114.027902,26.180036],[114.036368,26.188565],[114.042103,26.18346],[114.040947,26.177393],[114.055359,26.181337],[114.058972,26.172527],[114.059119,26.16616],[114.070401,26.171126],[114.074686,26.171767],[114.080947,26.168022],[114.088593,26.168423],[114.094034,26.176392],[114.100358,26.178414],[114.099644,26.182398],[114.102816,26.187824],[114.116807,26.191788],[114.128151,26.196993],[114.136155,26.198475],[114.141933,26.203379],[114.153235,26.2044],[114.165503,26.209885],[114.181301,26.214508],[114.183738,26.201077],[114.186616,26.197153],[114.192267,26.196733],[114.211616,26.202939],[114.216784,26.203139],[114.22212,26.188865],[114.230565,26.185161],[114.232204,26.179936],[114.218485,26.168523],[114.21941,26.163957],[114.225376,26.159672],[114.235691,26.160072],[114.237266,26.152162],[114.225313,26.147716],[114.214977,26.137462],[114.204809,26.133115],[114.188906,26.121297],[114.182457,26.121237],[114.171071,26.12324],[114.162415,26.120275],[114.156701,26.115808],[114.129013,26.105971],[114.108761,26.100282],[114.10748,26.095152],[114.11895,26.089903],[114.12021,26.084212],[114.116597,26.081567],[114.114937,26.076357],[114.109412,26.073651],[114.106912,26.069463],[114.100043,26.071828],[114.085589,26.066336],[114.081745,26.067819],[114.069854,26.078541],[114.05788,26.075976],[114.052502,26.078561],[114.043805,26.076677],[114.046052,26.070846],[114.037355,26.063691],[114.035212,26.059001],[114.036599,26.046794],[114.03141,26.040961],[114.028091,26.031179],[114.018847,26.025325],[114.008469,26.015661],[114.007167,26.012413],[114.009057,26.004192],[114.017061,25.996511],[114.017587,25.992922],[114.024015,25.992922],[114.028217,25.98139],[114.021074,25.975233],[114.020717,25.972184],[114.02828,25.976055],[114.039015,25.986805],[114.054519,25.990876],[114.06956,25.989673],[114.075632,25.986665],[114.082816,25.99222],[114.096387,25.99212],[114.105064,25.990716],[114.11082,25.996993],[114.122269,26.004573],[114.129013,26.001685],[114.133613,26.002387],[114.150861,26.011631],[114.151554,26.018508],[114.161302,26.025365],[114.165104,26.025024],[114.178192,26.028572],[114.183171,26.027169],[114.190104,26.029314],[114.201931,26.025806],[114.215565,26.020132],[114.221363,26.018869],[114.231069,26.026688],[114.239031,26.02771],[114.242518,26.025645],[114.257707,26.026187],[114.269808,26.029575],[114.277392,26.035529],[114.281782,26.03188],[114.293042,26.034907],[114.294513,26.039698],[114.291992,26.048538],[114.294618,26.052908],[114.300752,26.055393],[114.308546,26.061747],[114.313273,26.067579],[114.333483,26.076497],[114.335899,26.081607],[114.344575,26.08836],[114.356949,26.090844],[114.364827,26.102205],[114.368482,26.110199],[114.375057,26.116509],[114.383524,26.116249],[114.391465,26.112182],[114.401821,26.113685],[114.405708,26.109498],[114.412073,26.107154],[114.422283,26.108876],[114.426317,26.107835],[114.424321,26.09926],[114.42785,26.090143],[114.428712,26.082048],[114.431001,26.085074],[114.44056,26.103988],[114.445035,26.110459],[114.456547,26.114366],[114.456673,26.125924],[114.452808,26.142869],[114.455791,26.145874],[114.4664,26.144932],[114.480706,26.152162],[114.486084,26.161795],[114.495433,26.169864],[114.502323,26.171466],[114.505369,26.176912],[114.513773,26.185362],[114.516273,26.191548],[114.520033,26.192729],[114.522806,26.207503],[114.518457,26.213247],[114.523856,26.213668],[114.527365,26.218191],[114.532911,26.220513],[114.5381,26.215149],[114.545411,26.214128],[114.54999,26.219112],[114.552238,26.226317],[114.565305,26.228919],[114.576313,26.235563],[114.583246,26.235743],[114.587342,26.232301],[114.594527,26.232201],[114.598645,26.224696],[114.60751,26.223175],[114.610031,26.21613],[114.606544,26.206602],[114.60646,26.201577],[114.614506,26.200016],[114.619379,26.202038],[114.632614,26.203399],[114.636018,26.202338],[114.641795,26.191348],[114.644568,26.191107],[114.653979,26.198495],[114.668958,26.194351],[114.670702,26.20494],[114.676689,26.208724],[114.678517,26.21683],[114.686227,26.218532],[114.687865,26.225176],[114.684903,26.228639],[114.687361,26.234823],[114.687151,26.239806],[114.69484,26.243968],[114.702004,26.245129],[114.71047,26.251372],[114.711604,26.267158],[114.719944,26.275561],[114.722402,26.279982],[114.730679,26.284043],[114.732297,26.288604],[114.728999,26.292624],[114.72986,26.295685],[114.736835,26.300905],[114.738767,26.307585],[114.742255,26.308085],[114.748116,26.303945],[114.749061,26.314385],[114.762422,26.326364],[114.764754,26.332822],[114.758473,26.3424],[114.765952,26.365531],[114.76425,26.371427],[114.77154,26.378783],[114.771099,26.385819],[114.768725,26.388677],[114.756057,26.395332],[114.745406,26.394093],[114.735091,26.389596],[114.727528,26.389436],[114.716457,26.38302],[114.705365,26.384999],[114.700176,26.389376],[114.689126,26.391814],[114.6865,26.400468],[114.679546,26.404105],[114.670681,26.404604],[114.665135,26.408821],[114.653244,26.408321],[114.651501,26.412617],[114.654274,26.42007],[114.659841,26.425844],[114.667214,26.429121],[114.668496,26.433976],[114.667046,26.4478],[114.657824,26.450536],[114.654295,26.454371],[114.656837,26.460563],[114.655072,26.464957],[114.644253,26.467993],[114.633056,26.486107],[114.623728,26.489561],[114.61398,26.482712],[114.603876,26.478658],[114.600304,26.487484],[114.591418,26.480515],[114.584401,26.47728],[114.578519,26.471948],[114.565557,26.478878],[114.564864,26.483031],[114.560809,26.484968],[114.556839,26.491039],[114.548688,26.489801],[114.540285,26.490679],[114.538919,26.493774],[114.543436,26.502779],[114.53768,26.514319],[114.53144,26.517993],[114.526629,26.523423],[114.521146,26.523862],[114.51873,26.528154],[114.521714,26.537096],[114.520789,26.54027],[114.526041,26.546876],[114.531167,26.545339],[114.538478,26.552225],[114.539612,26.558432],[114.543394,26.565177],[114.559591,26.572799],[114.561524,26.575992],[114.563162,26.585928],[114.566523,26.589978],[114.563982,26.59742],[114.568834,26.602347],[114.568561,26.607374],[114.573225,26.616131],[114.57041,26.62036],[114.571523,26.625186],[114.568834,26.629434],[114.56812,26.635876],[114.571902,26.643295],[114.550284,26.649437],[114.544108,26.657652],[114.52747,26.670751],[114.522134,26.672286],[114.521735,26.678407],[114.517764,26.681676],[114.513794,26.692699],[114.515747,26.699596],[114.517008,26.707828],[114.508374,26.711176],[114.498731,26.703144],[114.492071,26.700911],[114.498752,26.685623],[114.499718,26.675915],[114.488626,26.674938],[114.486063,26.682792],[114.481147,26.687756],[114.475727,26.688434],[114.469572,26.697025],[114.456421,26.702526],[114.448585,26.702606],[114.434489,26.697842],[114.420981,26.690806],[114.404342,26.687437],[114.390372,26.692759],[114.380814,26.692181],[114.372347,26.695211],[114.363083,26.693895],[114.352915,26.681556],[114.340667,26.673861],[114.333798,26.67101],[114.326487,26.670392],[114.326256,26.673722],[114.31947,26.683789],[114.313714,26.681516],[114.306277,26.681457],[114.295584,26.688733],[114.283148,26.683769],[114.279177,26.676931],[114.274534,26.673981],[114.274808,26.664112],[114.265186,26.643235],[114.278841,26.624688],[114.281068,26.619422],[114.286782,26.614795],[114.286908,26.609927],[114.290395,26.606656],[114.284975,26.597739],[114.286803,26.59315],[114.278274,26.582077],[114.255018,26.57687],[114.248884,26.568389],[114.239997,26.562343],[114.2288,26.560986],[114.224115,26.558352],[114.221679,26.550489],[114.222414,26.538713],[114.227813,26.537316],[114.233107,26.538793],[114.243737,26.536358],[114.266993,26.526796],[114.267497,26.522105],[114.280333,26.520887],[114.287118,26.511025],[114.290774,26.510546],[114.294576,26.506333],[114.29632,26.498307],[114.307139,26.497149],[114.307874,26.492716],[114.297979,26.479756],[114.28674,26.478957],[114.279871,26.476621],[114.286404,26.4632],[114.273358,26.459545],[114.269577,26.450097],[114.255312,26.453433],[114.254157,26.449797],[114.258863,26.446561],[114.260921,26.437991],[114.26985,26.43873],[114.273631,26.436813],[114.279366,26.43923],[114.292013,26.436533],[114.295563,26.429261],[114.302979,26.428841],[114.309786,26.423627],[114.309303,26.414096],[114.304072,26.412337],[114.299366,26.404984],[114.28632,26.401567],[114.276488,26.393313],[114.275837,26.388317],[114.271341,26.385599],[114.270249,26.380762],[114.266299,26.377204],[114.258001,26.381481],[114.249262,26.380722],[114.251237,26.373846],[114.248905,26.367949],[114.239535,26.368289],[114.235271,26.365211],[114.226111,26.364191],[114.223233,26.368129],[114.211091,26.372647],[114.200881,26.368529],[114.192667,26.373106],[114.188108,26.381841],[114.17857,26.382381],[114.168003,26.386998],[114.166617,26.393373],[114.167394,26.402466],[114.165987,26.408701],[114.162436,26.412397],[114.160398,26.419591],[114.156533,26.422907],[114.148991,26.422987],[114.145063,26.426184],[114.125882,26.424386],[114.118677,26.422048],[114.107522,26.421189],[114.094959,26.413436],[114.088656,26.411478]]]]}},{"type":"Feature","properties":{"adcode":360828,"name":"万安县","center":[114.784694,26.462085],"centroid":[114.818047,26.439294],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":9,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.668958,26.194351],[114.667193,26.185101],[114.677046,26.181497],[114.685617,26.181958],[114.698327,26.169344],[114.714797,26.162555],[114.718516,26.162355],[114.71881,26.16644],[114.726079,26.174129],[114.728179,26.1842],[114.739755,26.185942],[114.753305,26.180316],[114.757759,26.181558],[114.761834,26.177173],[114.766015,26.176132],[114.765742,26.182378],[114.772569,26.192108],[114.777401,26.192289],[114.782317,26.187324],[114.78906,26.188865],[114.798535,26.18342],[114.817442,26.182599],[114.820593,26.18382],[114.825782,26.190307],[114.834984,26.189426],[114.837715,26.19383],[114.842757,26.192809],[114.847504,26.198535],[114.851559,26.199195],[114.862189,26.19337],[114.860466,26.185101],[114.866201,26.186883],[114.871243,26.184681],[114.878974,26.193089],[114.884142,26.195652],[114.889772,26.203679],[114.902923,26.202078],[114.905612,26.205621],[114.904604,26.209564],[114.908995,26.211786],[114.91912,26.208724],[114.930507,26.208263],[114.935822,26.205181],[114.939036,26.199656],[114.945086,26.201657],[114.962397,26.197754],[114.974203,26.201437],[114.976682,26.197914],[114.984686,26.195932],[114.997312,26.198114],[115.005043,26.19357],[115.008551,26.189025],[115.01082,26.17461],[115.009791,26.170185],[115.013845,26.168923],[115.021555,26.175471],[115.028446,26.160493],[115.030966,26.158831],[115.039013,26.160032],[115.046428,26.157249],[115.054138,26.147996],[115.058802,26.147316],[115.063823,26.14343],[115.078297,26.144532],[115.08418,26.149418],[115.090587,26.150159],[115.09523,26.154205],[115.098234,26.160773],[115.099116,26.167862],[115.086406,26.172407],[115.087247,26.178514],[115.084011,26.180156],[115.081596,26.187023],[115.070482,26.188124],[115.065188,26.19325],[115.046008,26.195972],[115.04647,26.200056],[115.051449,26.203379],[115.051344,26.207503],[115.047206,26.211746],[115.051554,26.219632],[115.064033,26.229299],[115.070356,26.2303],[115.078591,26.24735],[115.079159,26.256274],[115.086995,26.260596],[115.091133,26.266938],[115.078717,26.281162],[115.071344,26.286664],[115.069873,26.296005],[115.070861,26.303405],[115.074432,26.308245],[115.072835,26.314845],[115.067415,26.319705],[115.067478,26.323964],[115.06063,26.327603],[115.059222,26.331623],[115.050252,26.339761],[115.045378,26.34094],[115.033403,26.355055],[115.026534,26.359453],[115.034433,26.364191],[115.03708,26.367689],[115.035147,26.379263],[115.031681,26.382541],[115.032752,26.392834],[115.043487,26.39799],[115.043781,26.403205],[115.038466,26.406742],[115.037794,26.410059],[115.041723,26.415395],[115.044643,26.426264],[115.054768,26.431159],[115.058613,26.436773],[115.059012,26.442626],[115.0621,26.447979],[115.051785,26.454351],[115.047794,26.454471],[115.045945,26.449757],[115.042227,26.449697],[115.039223,26.454851],[115.034916,26.456708],[115.028614,26.465177],[115.020063,26.472946],[115.017521,26.480236],[115.014328,26.482872],[115.014349,26.487444],[115.020694,26.488503],[115.02813,26.49619],[115.028383,26.498367],[115.017353,26.508869],[115.011765,26.511125],[115.00624,26.518751],[114.998236,26.523203],[114.990211,26.521806],[114.987669,26.523403],[114.987732,26.532046],[114.981241,26.539511],[114.965233,26.531547],[114.956746,26.539711],[114.948363,26.542006],[114.940843,26.548114],[114.940548,26.552165],[114.929036,26.548992],[114.923574,26.556975],[114.92475,26.561585],[114.923658,26.571163],[114.920402,26.578386],[114.920297,26.583953],[114.912104,26.586826],[114.913511,26.594627],[114.918385,26.600372],[114.911494,26.608132],[114.882167,26.622992],[114.880739,26.633523],[114.878491,26.638489],[114.866643,26.649357],[114.87305,26.657971],[114.879646,26.65825],[114.887293,26.660922],[114.890655,26.670532],[114.890339,26.674898],[114.879373,26.68335],[114.878869,26.692799],[114.873911,26.693836],[114.873743,26.68662],[114.867336,26.682354],[114.8645,26.685663],[114.866811,26.694852],[114.86305,26.697025],[114.853471,26.69828],[114.847819,26.702645],[114.839836,26.700314],[114.8299,26.699417],[114.831349,26.684327],[114.829942,26.678646],[114.821013,26.668458],[114.812379,26.657074],[114.802884,26.655179],[114.788556,26.662058],[114.78927,26.666066],[114.784985,26.669475],[114.78238,26.68028],[114.77904,26.683629],[114.770195,26.685743],[114.766876,26.691842],[114.76841,26.707469],[114.766288,26.709103],[114.758389,26.708505],[114.754271,26.703941],[114.745679,26.698181],[114.744061,26.709342],[114.73736,26.711634],[114.729314,26.704838],[114.723285,26.702087],[114.724482,26.690447],[114.718747,26.685942],[114.702928,26.669814],[114.69818,26.666764],[114.69713,26.655339],[114.69005,26.659765],[114.687298,26.658469],[114.684063,26.662178],[114.674651,26.657153],[114.66858,26.658928],[114.656185,26.671947],[114.653013,26.677968],[114.640471,26.681277],[114.642908,26.685424],[114.644442,26.694593],[114.652152,26.699975],[114.637299,26.70434],[114.6294,26.70422],[114.624484,26.711455],[114.618266,26.714325],[114.615241,26.720582],[114.614632,26.72939],[114.61043,26.730665],[114.598687,26.725106],[114.59583,26.72939],[114.587027,26.725405],[114.580893,26.716776],[114.573708,26.71572],[114.57041,26.711275],[114.558667,26.706731],[114.55728,26.699217],[114.550557,26.683709],[114.547175,26.683789],[114.541797,26.690527],[114.533898,26.693696],[114.527848,26.68963],[114.521483,26.693377],[114.520285,26.697324],[114.515747,26.699596],[114.513794,26.692699],[114.517764,26.681676],[114.521735,26.678407],[114.522134,26.672286],[114.52747,26.670751],[114.544108,26.657652],[114.550284,26.649437],[114.571902,26.643295],[114.56812,26.635876],[114.568834,26.629434],[114.571523,26.625186],[114.57041,26.62036],[114.573225,26.616131],[114.568561,26.607374],[114.568834,26.602347],[114.563982,26.59742],[114.566523,26.589978],[114.563162,26.585928],[114.561524,26.575992],[114.559591,26.572799],[114.543394,26.565177],[114.539612,26.558432],[114.538478,26.552225],[114.531167,26.545339],[114.526041,26.546876],[114.520789,26.54027],[114.521714,26.537096],[114.51873,26.528154],[114.521146,26.523862],[114.526629,26.523423],[114.53144,26.517993],[114.53768,26.514319],[114.543436,26.502779],[114.538919,26.493774],[114.540285,26.490679],[114.548688,26.489801],[114.556839,26.491039],[114.560809,26.484968],[114.564864,26.483031],[114.565557,26.478878],[114.578519,26.471948],[114.584401,26.47728],[114.591418,26.480515],[114.600304,26.487484],[114.603876,26.478658],[114.61398,26.482712],[114.623728,26.489561],[114.633056,26.486107],[114.644253,26.467993],[114.655072,26.464957],[114.656837,26.460563],[114.654295,26.454371],[114.657824,26.450536],[114.667046,26.4478],[114.668496,26.433976],[114.667214,26.429121],[114.659841,26.425844],[114.654274,26.42007],[114.651501,26.412617],[114.653244,26.408321],[114.665135,26.408821],[114.670681,26.404604],[114.679546,26.404105],[114.6865,26.400468],[114.689126,26.391814],[114.700176,26.389376],[114.705365,26.384999],[114.716457,26.38302],[114.727528,26.389436],[114.735091,26.389596],[114.745406,26.394093],[114.756057,26.395332],[114.768725,26.388677],[114.771099,26.385819],[114.77154,26.378783],[114.76425,26.371427],[114.765952,26.365531],[114.758473,26.3424],[114.764754,26.332822],[114.762422,26.326364],[114.749061,26.314385],[114.748116,26.303945],[114.742255,26.308085],[114.738767,26.307585],[114.736835,26.300905],[114.72986,26.295685],[114.728999,26.292624],[114.732297,26.288604],[114.730679,26.284043],[114.722402,26.279982],[114.719944,26.275561],[114.711604,26.267158],[114.71047,26.251372],[114.702004,26.245129],[114.69484,26.243968],[114.687151,26.239806],[114.687361,26.234823],[114.684903,26.228639],[114.687865,26.225176],[114.686227,26.218532],[114.678517,26.21683],[114.676689,26.208724],[114.670702,26.20494],[114.668958,26.194351]]]]}},{"type":"Feature","properties":{"adcode":360829,"name":"安福县","center":[114.61384,27.382746],"centroid":[114.449024,27.35538],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":10,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.737045,27.589449],[114.73257,27.594116],[114.730469,27.600186],[114.717549,27.597319],[114.710911,27.597319],[114.700596,27.593938],[114.692466,27.594511],[114.678034,27.590497],[114.670828,27.585059],[114.667761,27.576477],[114.667004,27.567696],[114.660639,27.563938],[114.659652,27.559349],[114.655492,27.554187],[114.651837,27.542298],[114.634736,27.530231],[114.623497,27.535236],[114.6194,27.542833],[114.620115,27.550152],[114.605997,27.551833],[114.601817,27.549143],[114.593666,27.555611],[114.594653,27.561189],[114.590704,27.564828],[114.584359,27.563305],[114.572994,27.565026],[114.554045,27.561703],[114.546566,27.559468],[114.540138,27.559943],[114.533268,27.56734],[114.534949,27.576674],[114.534928,27.586107],[114.529949,27.591189],[114.530915,27.601174],[114.524634,27.606097],[114.517596,27.607442],[114.505916,27.599553],[114.502806,27.595539],[114.503752,27.585534],[114.499823,27.580214],[114.493794,27.580926],[114.483899,27.575745],[114.471925,27.564353],[114.467156,27.563325],[114.464593,27.557866],[114.462177,27.561861],[114.456442,27.562138],[114.453585,27.567201],[114.449509,27.568348],[114.440959,27.564096],[114.429468,27.561881],[114.424699,27.559152],[114.421107,27.550785],[114.416947,27.548174],[114.405645,27.550547],[114.386948,27.549459],[114.385141,27.555967],[114.378902,27.557727],[114.375141,27.55573],[114.372789,27.54665],[114.3651,27.546749],[114.358608,27.553297],[114.355016,27.560022],[114.34905,27.564057],[114.334764,27.557332],[114.333525,27.559547],[114.308756,27.575745],[114.299996,27.578177],[114.283967,27.578988],[114.265018,27.569713],[114.261384,27.563285],[114.253548,27.562158],[114.247602,27.557352],[114.240376,27.558182],[114.233065,27.552525],[114.22983,27.552446],[114.226111,27.547679],[114.226237,27.539272],[114.222939,27.530369],[114.21899,27.525621],[114.208402,27.521327],[114.202204,27.520378],[114.198129,27.505161],[114.204998,27.49681],[114.20254,27.494554],[114.202729,27.487547],[114.19607,27.480204],[114.195398,27.473375],[114.186763,27.471178],[114.181553,27.466764],[114.178633,27.45736],[114.177898,27.450134],[114.173486,27.444808],[114.161785,27.439165],[114.155924,27.439224],[114.148193,27.432334],[114.140777,27.430532],[114.133319,27.431878],[114.129517,27.429601],[114.122143,27.429482],[114.112858,27.436848],[114.097501,27.434136],[114.089959,27.430076],[114.080821,27.428254],[114.070653,27.435779],[114.059539,27.430749],[114.053699,27.433502],[114.046914,27.432492],[114.041326,27.434215],[114.029981,27.426215],[114.030654,27.417026],[114.026935,27.405697],[114.023049,27.402844],[114.026284,27.396149],[114.021788,27.391633],[114.023532,27.387354],[114.031956,27.379668],[114.038679,27.381352],[114.049519,27.375765],[114.047901,27.371901],[114.051262,27.362926],[114.054561,27.360013],[114.066997,27.356506],[114.07435,27.353216],[114.071325,27.348995],[114.071094,27.340632],[114.074098,27.335915],[114.080652,27.335123],[114.082669,27.332566],[114.095001,27.331951],[114.100631,27.329414],[114.106282,27.319464],[114.116744,27.309751],[114.120736,27.30985],[114.136512,27.317304],[114.142248,27.318592],[114.144559,27.314271],[114.138865,27.303348],[114.140588,27.295536],[114.144832,27.289311],[114.147857,27.276382],[114.148487,27.265277],[114.157836,27.253159],[114.157625,27.242845],[114.142542,27.231101],[114.127815,27.221936],[114.139664,27.207889],[114.144685,27.204376],[114.143025,27.199277],[114.14563,27.194772],[114.16002,27.192986],[114.171701,27.200269],[114.184936,27.199039],[114.191469,27.207849],[114.203276,27.215448],[114.210754,27.215944],[114.22338,27.207631],[114.226784,27.210805],[114.233695,27.210329],[114.248674,27.205011],[114.263841,27.204059],[114.277097,27.204873],[114.279997,27.207571],[114.282412,27.218345],[114.286383,27.219615],[114.294639,27.208662],[114.302874,27.204575],[114.30924,27.204396],[114.312958,27.211143],[114.325752,27.208047],[114.332369,27.20015],[114.337432,27.186973],[114.337957,27.178717],[114.341781,27.168555],[114.350835,27.154957],[114.361381,27.149677],[114.367558,27.140544],[114.378377,27.129981],[114.384742,27.126784],[114.392179,27.126328],[114.399448,27.121522],[114.397263,27.116339],[114.399343,27.104384],[114.404658,27.098227],[114.412935,27.09491],[114.414699,27.088852],[114.427115,27.066643],[114.431001,27.066086],[114.441589,27.069186],[114.455119,27.069007],[114.462744,27.067159],[114.469971,27.072007],[114.474992,27.073179],[114.483752,27.071888],[114.49058,27.069285],[114.494403,27.071689],[114.510621,27.075761],[114.513037,27.07749],[114.524045,27.079754],[114.529508,27.084303],[114.540327,27.087382],[114.546041,27.090838],[114.556125,27.090242],[114.561839,27.096737],[114.578099,27.118822],[114.590115,27.10925],[114.589317,27.106946],[114.599968,27.102319],[114.611375,27.110223],[114.617951,27.111593],[114.62835,27.118524],[114.628182,27.125514],[114.634589,27.126824],[114.636165,27.129803],[114.629757,27.137447],[114.637194,27.14793],[114.631921,27.1546],[114.631942,27.1652],[114.630556,27.1705],[114.625661,27.175125],[114.618371,27.190625],[114.622552,27.196975],[114.623245,27.203007],[114.618602,27.212928],[114.626186,27.21771],[114.632005,27.217948],[114.637047,27.223146],[114.642362,27.221361],[114.646396,27.215746],[114.653937,27.210389],[114.662299,27.211976],[114.666647,27.215131],[114.671185,27.213782],[114.675744,27.215607],[114.680807,27.214496],[114.682319,27.218781],[114.679273,27.222829],[114.681038,27.225765],[114.689126,27.222174],[114.692172,27.22511],[114.700764,27.22761],[114.704798,27.238005],[114.713537,27.239869],[114.715028,27.246415],[114.729503,27.251493],[114.733789,27.253972],[114.734482,27.259783],[114.739566,27.262044],[114.746729,27.268192],[114.748599,27.271682],[114.745805,27.277255],[114.747024,27.286892],[114.758683,27.297697],[114.761267,27.303526],[114.771141,27.312169],[114.784313,27.315024],[114.786077,27.320852],[114.789544,27.32331],[114.790237,27.328859],[114.785867,27.335123],[114.785258,27.339225],[114.791497,27.350164],[114.797842,27.357259],[114.797758,27.361598],[114.787905,27.368692],[114.782716,27.380817],[114.789922,27.386621],[114.790279,27.390405],[114.784292,27.402151],[114.784081,27.42164],[114.781287,27.42867],[114.781561,27.436809],[114.767548,27.449718],[114.762737,27.450787],[114.759733,27.456588],[114.7532,27.462824],[114.75257,27.466902],[114.747024,27.474286],[114.749418,27.48155],[114.740553,27.486479],[114.735385,27.486874],[114.737948,27.494633],[114.733452,27.502529],[114.722213,27.509554],[114.72215,27.5127],[114.729377,27.516203],[114.733284,27.52103],[114.733347,27.530666],[114.736814,27.533396],[114.747822,27.537669],[114.748767,27.54396],[114.744334,27.549182],[114.74549,27.565243],[114.742906,27.570069],[114.742402,27.580214],[114.737045,27.589449]]]]}},{"type":"Feature","properties":{"adcode":360830,"name":"永新县","center":[114.242534,26.944721],"centroid":[114.18396,26.968921],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":11,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.455119,27.069007],[114.441589,27.069186],[114.431001,27.066086],[114.427115,27.066643],[114.414699,27.088852],[114.412935,27.09491],[114.404658,27.098227],[114.399343,27.104384],[114.397263,27.116339],[114.399448,27.121522],[114.392179,27.126328],[114.384742,27.126784],[114.378377,27.129981],[114.367558,27.140544],[114.361381,27.149677],[114.350835,27.154957],[114.341781,27.168555],[114.337957,27.178717],[114.337432,27.186973],[114.332369,27.20015],[114.325752,27.208047],[114.312958,27.211143],[114.30924,27.204396],[114.302874,27.204575],[114.294639,27.208662],[114.286383,27.219615],[114.282412,27.218345],[114.279997,27.207571],[114.277097,27.204873],[114.263841,27.204059],[114.248674,27.205011],[114.233695,27.210329],[114.226784,27.210805],[114.22338,27.207631],[114.210754,27.215944],[114.203276,27.215448],[114.191469,27.207849],[114.184936,27.199039],[114.171701,27.200269],[114.16002,27.192986],[114.14563,27.194772],[114.143025,27.199277],[114.144685,27.204376],[114.139664,27.207889],[114.127815,27.221936],[114.122815,27.218266],[114.114433,27.223483],[114.109706,27.221738],[114.095379,27.209],[114.094476,27.205091],[114.097921,27.199634],[114.097312,27.19636],[114.091303,27.190922],[114.085988,27.168932],[114.078951,27.162679],[114.076703,27.155771],[114.073216,27.153508],[114.058426,27.157855],[114.049372,27.158213],[114.037418,27.150113],[114.013427,27.122595],[114.00912,27.113142],[114.003974,27.094751],[113.999163,27.091593],[113.995843,27.085495],[113.994856,27.076735],[114.001095,27.068709],[113.997713,27.063961],[113.997734,27.057762],[113.993638,27.053232],[113.98786,27.051245],[113.981705,27.044369],[113.979373,27.036202],[113.975424,27.033718],[113.966579,27.033639],[113.959836,27.021416],[113.959269,27.009053],[113.963113,27.001837],[113.961201,26.999034],[113.948324,26.998557],[113.946853,26.994502],[113.939479,26.990486],[113.936706,26.984899],[113.932715,26.981977],[113.921412,26.960064],[113.921265,26.954516],[113.926854,26.949166],[113.92637,26.947158],[113.917022,26.93771],[113.910635,26.934249],[113.90219,26.925835],[113.901035,26.917878],[113.903031,26.910637],[113.896938,26.901326],[113.891392,26.897844],[113.890174,26.889905],[113.891308,26.884552],[113.888619,26.880055],[113.891161,26.874423],[113.892085,26.860531],[113.886413,26.861188],[113.877443,26.859476],[113.86801,26.847991],[113.859019,26.833797],[113.857948,26.826829],[113.835763,26.80636],[113.834587,26.80409],[113.836772,26.796144],[113.842528,26.789572],[113.861372,26.807456],[113.868998,26.805962],[113.873262,26.798992],[113.884102,26.795547],[113.886875,26.798395],[113.89698,26.796483],[113.909606,26.79957],[113.926643,26.807197],[113.930677,26.804508],[113.934206,26.7972],[113.93824,26.794571],[113.942021,26.786844],[113.951937,26.779614],[113.963638,26.778259],[113.969962,26.784055],[113.975991,26.78547],[113.991096,26.784255],[113.994646,26.781327],[113.996495,26.774555],[114.005864,26.774734],[114.017398,26.780789],[114.020801,26.788357],[114.030927,26.791544],[114.036116,26.789672],[114.044036,26.794969],[114.045464,26.811657],[114.049792,26.813549],[114.050086,26.806898],[114.055338,26.802298],[114.063699,26.801521],[114.074455,26.792878],[114.083131,26.793058],[114.089833,26.7971],[114.097963,26.793376],[114.108236,26.784514],[114.117521,26.782801],[114.125378,26.777582],[114.123278,26.766687],[114.135903,26.760153],[114.13979,26.756268],[114.146911,26.754993],[114.153802,26.747801],[114.160903,26.746287],[114.170713,26.748677],[114.176932,26.746585],[114.177625,26.743258],[114.173444,26.737619],[114.192625,26.722595],[114.203024,26.720781],[114.211385,26.733734],[114.221153,26.738138],[114.222246,26.741246],[114.217351,26.758977],[114.223926,26.768619],[114.232771,26.771268],[114.236048,26.776805],[114.253022,26.77822],[114.257896,26.775829],[114.266551,26.776268],[114.27298,26.76838],[114.277139,26.771427],[114.286047,26.773997],[114.291887,26.782303],[114.296719,26.784573],[114.307517,26.783],[114.312412,26.78545],[114.32321,26.787382],[114.338399,26.793456],[114.350856,26.79722],[114.362222,26.797857],[114.365352,26.79943],[114.367894,26.809068],[114.376087,26.815719],[114.385309,26.817372],[114.393628,26.826092],[114.404069,26.830293],[114.409615,26.830154],[114.41367,26.83324],[114.421422,26.828541],[114.426212,26.830572],[114.436064,26.827287],[114.443333,26.82004],[114.446925,26.821035],[114.452661,26.817232],[114.457976,26.816356],[114.468648,26.822688],[114.481105,26.822847],[114.48371,26.828681],[114.479887,26.839989],[114.472156,26.844945],[114.45766,26.847772],[114.451253,26.854082],[114.446106,26.855774],[114.445875,26.864253],[114.439909,26.876413],[114.433522,26.882363],[114.430518,26.891735],[114.430371,26.899973],[114.42201,26.906777],[114.420455,26.911492],[114.420813,26.919629],[114.424027,26.925676],[114.432346,26.928939],[114.433732,26.936716],[114.430854,26.940813],[114.431254,26.947456],[114.428249,26.951454],[114.418985,26.956624],[114.41909,26.959547],[114.426296,26.959826],[114.436863,26.962212],[114.447934,26.961596],[114.455665,26.968734],[114.457429,26.980068],[114.469236,26.990963],[114.478164,27.004819],[114.481462,27.006847],[114.476547,27.009689],[114.475475,27.014837],[114.471463,27.021297],[114.45474,27.029882],[114.45306,27.036083],[114.447976,27.04578],[114.447451,27.049476],[114.452409,27.057384],[114.455119,27.069007]]]]}},{"type":"Feature","properties":{"adcode":360881,"name":"井冈山市","center":[114.284421,26.745919],"centroid":[114.14755,26.64284],"childrenNum":0,"level":"district","parent":{"adcode":360800},"subFeatureIndex":12,"acroutes":[100000,360000,360800]},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.457976,26.816356],[114.452661,26.817232],[114.446925,26.821035],[114.443333,26.82004],[114.436064,26.827287],[114.426212,26.830572],[114.421422,26.828541],[114.41367,26.83324],[114.409615,26.830154],[114.404069,26.830293],[114.393628,26.826092],[114.385309,26.817372],[114.376087,26.815719],[114.367894,26.809068],[114.365352,26.79943],[114.362222,26.797857],[114.350856,26.79722],[114.338399,26.793456],[114.32321,26.787382],[114.312412,26.78545],[114.307517,26.783],[114.296719,26.784573],[114.291887,26.782303],[114.286047,26.773997],[114.277139,26.771427],[114.27298,26.76838],[114.266551,26.776268],[114.257896,26.775829],[114.253022,26.77822],[114.236048,26.776805],[114.232771,26.771268],[114.223926,26.768619],[114.217351,26.758977],[114.222246,26.741246],[114.221153,26.738138],[114.211385,26.733734],[114.203024,26.720781],[114.192625,26.722595],[114.173444,26.737619],[114.177625,26.743258],[114.176932,26.746585],[114.170713,26.748677],[114.160903,26.746287],[114.153802,26.747801],[114.146911,26.754993],[114.13979,26.756268],[114.135903,26.760153],[114.123278,26.766687],[114.125378,26.777582],[114.117521,26.782801],[114.108236,26.784514],[114.097963,26.793376],[114.089833,26.7971],[114.083131,26.793058],[114.074455,26.792878],[114.063699,26.801521],[114.055338,26.802298],[114.050086,26.806898],[114.049792,26.813549],[114.045464,26.811657],[114.044036,26.794969],[114.036116,26.789672],[114.030927,26.791544],[114.020801,26.788357],[114.017398,26.780789],[114.005864,26.774734],[113.996495,26.774555],[113.994646,26.781327],[113.991096,26.784255],[113.975991,26.78547],[113.969962,26.784055],[113.963638,26.778259],[113.951937,26.779614],[113.942021,26.786844],[113.93824,26.794571],[113.934206,26.7972],[113.930677,26.804508],[113.926643,26.807197],[113.909606,26.79957],[113.89698,26.796483],[113.886875,26.798395],[113.884102,26.795547],[113.873262,26.798992],[113.868998,26.805962],[113.861372,26.807456],[113.842528,26.789572],[113.845931,26.788158],[113.848704,26.777343],[113.853536,26.769416],[113.852422,26.76332],[113.855448,26.757204],[113.852864,26.750012],[113.85675,26.735627],[113.855364,26.727298],[113.856939,26.722575],[113.856456,26.714723],[113.861393,26.705954],[113.862653,26.68949],[113.861267,26.684766],[113.861792,26.670093],[113.860489,26.664092],[113.86801,26.652986],[113.87717,26.656455],[113.881476,26.654342],[113.884922,26.635796],[113.898094,26.63091],[113.90135,26.627899],[113.90364,26.618804],[113.906455,26.615672],[113.915467,26.613957],[113.924543,26.615273],[113.934773,26.613019],[113.953155,26.613717],[113.960004,26.618106],[113.970256,26.61663],[113.973449,26.612461],[113.976894,26.616211],[113.984415,26.614575],[113.99639,26.615592],[114.01286,26.602088],[114.017692,26.599614],[114.015423,26.593829],[114.019751,26.587444],[114.033091,26.585609],[114.042565,26.579923],[114.060884,26.580641],[114.069665,26.575832],[114.078867,26.575134],[114.084686,26.577768],[114.095169,26.577189],[114.10811,26.575034],[114.108635,26.569607],[114.105904,26.559669],[114.096282,26.548273],[114.097522,26.541228],[114.086283,26.525738],[114.087501,26.521187],[114.083993,26.513621],[114.084203,26.505016],[114.078089,26.491578],[114.072228,26.487405],[114.072711,26.479896],[114.077375,26.480335],[114.086766,26.478179],[114.098068,26.48415],[114.110127,26.482991],[114.10958,26.480216],[114.09727,26.466935],[114.09603,26.461282],[114.090547,26.45573],[114.090232,26.446242],[114.086409,26.439589],[114.088951,26.434815],[114.085757,26.423447],[114.089056,26.418052],[114.088656,26.411478],[114.094959,26.413436],[114.107522,26.421189],[114.118677,26.422048],[114.125882,26.424386],[114.145063,26.426184],[114.148991,26.422987],[114.156533,26.422907],[114.160398,26.419591],[114.162436,26.412397],[114.165987,26.408701],[114.167394,26.402466],[114.166617,26.393373],[114.168003,26.386998],[114.17857,26.382381],[114.188108,26.381841],[114.192667,26.373106],[114.200881,26.368529],[114.211091,26.372647],[114.223233,26.368129],[114.226111,26.364191],[114.235271,26.365211],[114.239535,26.368289],[114.248905,26.367949],[114.251237,26.373846],[114.249262,26.380722],[114.258001,26.381481],[114.266299,26.377204],[114.270249,26.380762],[114.271341,26.385599],[114.275837,26.388317],[114.276488,26.393313],[114.28632,26.401567],[114.299366,26.404984],[114.304072,26.412337],[114.309303,26.414096],[114.309786,26.423627],[114.302979,26.428841],[114.295563,26.429261],[114.292013,26.436533],[114.279366,26.43923],[114.273631,26.436813],[114.26985,26.43873],[114.260921,26.437991],[114.258863,26.446561],[114.254157,26.449797],[114.255312,26.453433],[114.269577,26.450097],[114.273358,26.459545],[114.286404,26.4632],[114.279871,26.476621],[114.28674,26.478957],[114.297979,26.479756],[114.307874,26.492716],[114.307139,26.497149],[114.29632,26.498307],[114.294576,26.506333],[114.290774,26.510546],[114.287118,26.511025],[114.280333,26.520887],[114.267497,26.522105],[114.266993,26.526796],[114.243737,26.536358],[114.233107,26.538793],[114.227813,26.537316],[114.222414,26.538713],[114.221679,26.550489],[114.224115,26.558352],[114.2288,26.560986],[114.239997,26.562343],[114.248884,26.568389],[114.255018,26.57687],[114.278274,26.582077],[114.286803,26.59315],[114.284975,26.597739],[114.290395,26.606656],[114.286908,26.609927],[114.286782,26.614795],[114.281068,26.619422],[114.278841,26.624688],[114.265186,26.643235],[114.274808,26.664112],[114.274534,26.673981],[114.279177,26.676931],[114.283148,26.683769],[114.295584,26.688733],[114.306277,26.681457],[114.313714,26.681516],[114.31947,26.683789],[114.326256,26.673722],[114.326487,26.670392],[114.333798,26.67101],[114.340667,26.673861],[114.352915,26.681556],[114.363083,26.693895],[114.372347,26.695211],[114.380814,26.692181],[114.390372,26.692759],[114.404342,26.687437],[114.420981,26.690806],[114.434489,26.697842],[114.431043,26.706751],[114.427745,26.709621],[114.42577,26.716557],[114.427619,26.71841],[114.431758,26.714325],[114.439762,26.712132],[114.438753,26.719088],[114.446547,26.718609],[114.444236,26.730347],[114.449425,26.732857],[114.451778,26.729171],[114.456715,26.728653],[114.459845,26.73485],[114.462891,26.729609],[114.466022,26.730048],[114.467555,26.735428],[114.466043,26.740967],[114.461064,26.744812],[114.458312,26.753598],[114.46537,26.75071],[114.467408,26.743995],[114.474593,26.742521],[114.475244,26.736982],[114.479635,26.739592],[114.480517,26.743198],[114.476505,26.748379],[114.48142,26.751945],[114.47995,26.759157],[114.469152,26.766348],[114.460328,26.768459],[114.449677,26.77563],[114.438417,26.771089],[114.435518,26.771905],[114.437304,26.776706],[114.433459,26.778658],[114.430434,26.784354],[114.43264,26.790827],[114.427073,26.794691],[114.426716,26.79943],[114.431127,26.803533],[114.436421,26.805046],[114.439426,26.802039],[114.446064,26.80636],[114.451589,26.813589],[114.453501,26.812254],[114.457976,26.816356]]]]}}]} |
| New file |
| | |
| | | <template> |
| | | <div :id="mapId" class="common-cesium-map"></div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { onBeforeUnmount, onMounted, ref, watch } from 'vue' |
| | | import { PublicCesium } from '@/utils/cesium/publicCesium' |
| | | import { loadJaAdminBoundary, removeJaAdminBoundary } from '@/utils/cesium/adminBoundary' |
| | | |
| | | const props = defineProps({ |
| | | active: { |
| | | type: Boolean, |
| | | default: true, |
| | | }, |
| | | domId: { |
| | | type: String, |
| | | default: '', |
| | | }, |
| | | flatMode: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | terrain: { |
| | | type: Boolean, |
| | | default: true, |
| | | }, |
| | | layerMode: { |
| | | type: Number, |
| | | default: 4, |
| | | }, |
| | | boundary: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | contour: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | showAdminBoundary: { |
| | | type: Boolean, |
| | | default: true, |
| | | }, |
| | | zoomToBoundary: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | enableStageEmit: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | clusterHeight: { |
| | | type: Number, |
| | | default: 100000, |
| | | }, |
| | | detailHeight: { |
| | | type: Number, |
| | | default: 10000, |
| | | }, |
| | | }) |
| | | |
| | | const emit = defineEmits(['ready', 'height-change', 'stage-change']) |
| | | const mapId = props.domId || `common-cesium-map-${Math.random().toString(36).slice(2, 10)}` |
| | | const viewInstance = ref(null) |
| | | const viewer = ref(null) |
| | | let adminBoundarySources = null |
| | | let initialized = false |
| | | let removeCameraListener = null |
| | | |
| | | const initMap = async () => { |
| | | if (initialized) return |
| | | initialized = true |
| | | viewInstance.value = new PublicCesium({ |
| | | dom: mapId, |
| | | flatMode: props.flatMode, |
| | | terrain: props.terrain, |
| | | layerMode: props.layerMode, |
| | | boundary: props.boundary, |
| | | contour: props.contour, |
| | | }) |
| | | viewer.value = viewInstance.value.getViewer() |
| | | if (props.showAdminBoundary) { |
| | | console.log(props.zoomToBoundary,'props.zoomToBoundary') |
| | | adminBoundarySources = await loadJaAdminBoundary(viewer.value, { |
| | | zoomTo: props.zoomToBoundary, |
| | | }) |
| | | } |
| | | if (props.enableStageEmit) { |
| | | let lastStage = '' |
| | | const onCameraChanged = () => { |
| | | const height = viewer.value?.camera?.positionCartographic?.height |
| | | if (height == null) return |
| | | emit('height-change', height) |
| | | let stage = 'mid' |
| | | if (height >= props.clusterHeight) stage = 'cluster' |
| | | if (height <= props.detailHeight) stage = 'detail' |
| | | if (stage !== lastStage) { |
| | | lastStage = stage |
| | | emit('stage-change', stage) |
| | | } |
| | | } |
| | | viewer.value?.camera?.changed?.addEventListener(onCameraChanged) |
| | | removeCameraListener = () => viewer.value?.camera?.changed?.removeEventListener(onCameraChanged) |
| | | } |
| | | emit('ready', { viewer: viewer.value, publicCesium: viewInstance.value }) |
| | | } |
| | | |
| | | watch( |
| | | () => props.active, |
| | | active => { |
| | | if (active) initMap() |
| | | } |
| | | ) |
| | | |
| | | onMounted(() => { |
| | | if (props.active) initMap() |
| | | }) |
| | | |
| | | onBeforeUnmount(() => { |
| | | if (removeCameraListener) removeCameraListener() |
| | | removeJaAdminBoundary(viewer.value, adminBoundarySources) |
| | | viewInstance.value?.viewerDestroy?.() |
| | | }) |
| | | |
| | | const getMap = () => ({ viewer: viewer.value, publicCesium: viewInstance.value }) |
| | | const getViewer = () => viewer.value |
| | | const getPublicCesium = () => viewInstance.value |
| | | |
| | | defineExpose({ getMap, getViewer, getPublicCesium }) |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .common-cesium-map { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="work-cesium map-container" :id="props.containerId"></div> |
| | | <div v-if="props.showLayerControl" class="layer-control-root" :class="{ collapsed: props.leftCollapsed }"> |
| | | <div class="layer-control-wrap" ref="layerWrapRef"> |
| | | <div class="layer-control" @click="toggleLayerPanel"> |
| | | <img :src="layerControlIcon" alt="图层控制" /> |
| | | </div> |
| | | <div v-if="showLayerPanel" class="layer-panel"> |
| | | <div class="panel-title">图层管理</div> |
| | | <div class="map-shell"> |
| | | <CommonCesiumMap ref="mapRef" class="command-cesium map-container" :dom-id="props.containerId" :active="true" |
| | | :flat-mode="false" :terrain="false" :layer-mode="4" :contour="false" :boundary="false" |
| | | :show-admin-boundary="true" :zoom-to-boundary="true" :enable-stage-emit="true" :cluster-height="100000" |
| | | @ready="handleMapReady" @stage-change="handleStageChange" /> |
| | | <div v-if="props.showLayerControl" class="layer-control-root" :class="{ collapsed: props.leftCollapsed }"> |
| | | <div class="layer-control-wrap" ref="layerWrapRef"> |
| | | <div class="layer-control" @click="toggleLayerPanel"> |
| | | <img :src="layerControlIcon" alt="图层控制" /> |
| | | </div> |
| | | <div v-if="showLayerPanel" class="layer-panel"> |
| | | <div class="panel-title">图层管理</div> |
| | | |
| | | <div class="panel-content"> |
| | | <el-tree |
| | | :data="layerTree" |
| | | show-checkbox |
| | | default-expand-all |
| | | node-key="key" |
| | | :props="layerTreeProps" |
| | | :default-checked-keys="defaultCheckedKeys" |
| | | /> |
| | | <div class="panel-content"> |
| | | <el-tree :data="layerTree" show-checkbox default-expand-all node-key="key" |
| | | :props="layerTreeProps" :default-checked-keys="defaultCheckedKeys" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div v-if="popupVisible" class="device-popup" :style="popupStyle" @click.stop> |
| | | <div class="device-popup__header"> |
| | | <el-tooltip |
| | | class="device-popup__title-tooltip" |
| | | :content="popupTitle" |
| | | placement="top" |
| | | effect="dark" |
| | | :show-after="200" |
| | | > |
| | | <span class="device-popup__title">{{ popupTitleDisplay }}</span> |
| | | </el-tooltip> |
| | | |
| | | <img class="device-popup__close" :src="popupClose" alt="" @click.stop="closePopup"> |
| | | </div> |
| | | <div class="device-popup__type"> |
| | | <span class="value">{{ popupTypeText }}</span> |
| | | </div> |
| | | |
| | | <div class="device-popup__subtitle"> |
| | | <span class="device-popup__dot" :class="popupActionClass"></span> |
| | | <span class="device-popup__action">{{ popupActionText }}</span> |
| | | </div> |
| | | |
| | | <div class="device-popup__rows"> |
| | | <div class="device-popup__row"> |
| | | <div class="device-popup__col"> |
| | | <span class="label">状态</span> |
| | | <span class="value" :class="popupStatusClass">{{ popupStatusText }}</span> |
| | | </div> |
| | | |
| | | <span class="divider">|</span> |
| | | |
| | | <div class="device-popup__col"> |
| | | <span class="label">电量</span> |
| | | <span class="value">{{ popupBatteryText }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="device-popup__row"> |
| | | <div class="device-popup__col"> |
| | | <span class="label">方位角</span> |
| | | <span class="value">{{ popupAzimuthText }}</span> |
| | | </div> |
| | | |
| | | <span class="divider">|</span> |
| | | |
| | | <div class="device-popup__col"> |
| | | <span class="label">俯仰角</span> |
| | | <span class="value">{{ popupElevationText }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="device-popup__row"> |
| | | <span class="label">侦测目标</span> |
| | | <span class="value">{{ popupDetectCountText }}</span> |
| | | </div> |
| | | <div class="device-popup__row"> |
| | | <span class="label">有效范围</span> |
| | | <span class="value">{{ popupRangeText }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <script setup> |
| | | import * as Cesium from 'cesium' |
| | | import { PublicCesium } from '@/utils/cesium/publicCesium' |
| | | import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue' |
| | | import { geomAnalysis } from '@ztzf/utils' |
| | | import { fwDefenseZonePageApi } from '@/views/areaManage/defenseZone/defenseZoneApi' |
| | | import { fwAreaDividePageApi } from '@/views/areaManage/partition/partitionApi' |
| | | import { fwDefenseSceneListApi } from '@/views/areaManage/sceneConfig/sceneConfigApi' |
| | | import { cockpitAggregationApi } from '@/api/dataCockpit' |
| | | import layerControlIcon from '@/assets/images/dataCockpit/layerControl.png' |
| | | import equipmentIcon from '@/assets/images/dataCockpit/map/equipment.png' |
| | | import aggregationIcon from '@/assets/images/dataCockpit/map/aggregation.png' |
| | | import commandPostIcon from '@/assets/images/dataCockpit/map/command-post.png' |
| | | import popupClose from '@/assets/images/dataCockpit/map/popup-close.png' |
| | | import jaGeojsonRaw from '@/assets/geojson/ja.geojson?raw' |
| | | |
| | | const props = defineProps({ |
| | | onlineDevices: { |
| | |
| | | }, |
| | | }) |
| | | |
| | | let viewInstance = null |
| | | const DEFAULT_ZONE_PAGE_SIZE = 999 |
| | | |
| | | const mapRef = ref(null) |
| | | let viewer = null |
| | | const deviceEntityIds = new Set() |
| | | const deviceEntityMap = new Map() |
| | | let defenseZoneSource = null |
| | | let partitionSource = null |
| | | let aggregationSource = null |
| | | let commandPostSource = null |
| | | const detailVisible = ref(true) |
| | | const clusterVisible = ref(false) |
| | | const countyCenterMap = new Map() |
| | | const showLayerPanel = ref(false) |
| | | const layerWrapRef = ref(null) |
| | | const selectedDevice = ref(null) |
| | | let selectedDeviceEntity = null |
| | | let deviceClickHandler = null |
| | | let popupRenderHandler = null |
| | | const layerTreeProps = { |
| | | label: 'label', |
| | | children: 'children', |
| | |
| | | viewer.entities.removeById(id) |
| | | }) |
| | | deviceEntityIds.clear() |
| | | deviceEntityMap.clear() |
| | | } |
| | | |
| | | const clearDefenseZoneEntities = () => { |
| | | if (!defenseZoneSource) return |
| | | defenseZoneSource.entities.removeAll() |
| | | } |
| | | |
| | | const clearPartitionEntities = () => { |
| | | if (!partitionSource) return |
| | | partitionSource.entities.removeAll() |
| | | } |
| | | |
| | | const clearAggregationEntities = () => { |
| | | if (!aggregationSource) return |
| | | aggregationSource.entities.removeAll() |
| | | } |
| | | |
| | | const clearCommandPostEntities = () => { |
| | | if (!commandPostSource) return |
| | | commandPostSource.entities.removeAll() |
| | | } |
| | | |
| | | const setDetailVisibility = visible => { |
| | | detailVisible.value = visible |
| | | if (defenseZoneSource) defenseZoneSource.show = visible |
| | | if (partitionSource) partitionSource.show = visible |
| | | if (commandPostSource) commandPostSource.show = visible |
| | | if (!visible) closePopup() |
| | | deviceEntityIds.forEach(id => { |
| | | const entity = viewer?.entities?.getById(id) |
| | | if (entity) entity.show = visible |
| | | }) |
| | | } |
| | | |
| | | const setClusterVisibility = visible => { |
| | | clusterVisible.value = visible |
| | | if (aggregationSource) aggregationSource.show = visible |
| | | } |
| | | |
| | | const ensureCountyCenterMap = () => { |
| | | if (countyCenterMap.size) return |
| | | const geojson = JSON.parse(jaGeojsonRaw) |
| | | geojson.features?.forEach(feature => { |
| | | const name = feature?.properties?.name |
| | | const center = feature?.properties?.centroid || feature?.properties?.center |
| | | if (!name || !Array.isArray(center) || center.length < 2) return |
| | | countyCenterMap.set(name, { longitude: center[0], latitude: center[1] }) |
| | | }) |
| | | } |
| | | |
| | | |
| | | const RING_STYLES = [ |
| | | { inner: 0, outer: 5000, gradient: ['#FF361C', '#360B00'] }, |
| | | { inner: 5000, outer: 8000, gradient: ['#FFC609', '#583300'] }, |
| | | { inner: 8000, outer: 10000, gradient: ['#2AEDBF', '#012B11'] }, |
| | | { inner: 0, outer: 2000, gradient: ['#FF361C', '#360B00'] } |
| | | ] |
| | | |
| | | const MATERIAL_TYPE = 'RadialGradientMaterial' |
| | |
| | | return positions |
| | | } |
| | | |
| | | const addDeviceRings = (center, baseId) => { |
| | | const addDeviceRings = (center, baseId, visible) => { |
| | | RING_STYLES.forEach((ring, index) => { |
| | | const outerPositions = buildCirclePositions(center, ring.outer) |
| | | const holes = ring.inner |
| | |
| | | const material = new RadialGradientMaterialProperty(color1, color2) |
| | | viewer.entities.add({ |
| | | id: entityId, |
| | | show: visible, |
| | | polygon: { |
| | | hierarchy: new Cesium.PolygonHierarchy(outerPositions, holes), |
| | | material, |
| | |
| | | this.color2 = color2 |
| | | } |
| | | |
| | | get isConstant() { |
| | | get isConstant () { |
| | | return true |
| | | } |
| | | |
| | | get definitionChanged() { |
| | | get definitionChanged () { |
| | | return this._definitionChanged |
| | | } |
| | | |
| | | getType() { |
| | | getType () { |
| | | return MATERIAL_TYPE |
| | | } |
| | | |
| | | getValue(time, result) { |
| | | getValue (time, result) { |
| | | const target = result || {} |
| | | target.color1 = this.color1 |
| | | target.color2 = this.color2 |
| | | return target |
| | | } |
| | | |
| | | equals(other) { |
| | | equals (other) { |
| | | return ( |
| | | other instanceof RadialGradientMaterialProperty && |
| | | Cesium.Color.equals(this.color1, other.color1) && |
| | |
| | | if (!position) return |
| | | const entityId = `online-device-${item.id ?? index}` |
| | | deviceEntityIds.add(entityId) |
| | | addDeviceRings(position, entityId) |
| | | viewer.entities.add({ |
| | | addDeviceRings(position, entityId, detailVisible.value) |
| | | const entity = viewer.entities.add({ |
| | | id: entityId, |
| | | show: detailVisible.value, |
| | | position: Cesium.Cartesian3.fromDegrees(position.longitude, position.latitude, 0), |
| | | billboard: { |
| | | image: equipmentIcon, |
| | | width: 40.34, |
| | | height: 40.34, |
| | | width: 40, |
| | | height: 56, |
| | | verticalOrigin: Cesium.VerticalOrigin.BOTTOM, |
| | | }, |
| | | }) |
| | | deviceEntityMap.set(entityId, { data: item, entity }) |
| | | }) |
| | | if (selectedDeviceEntity && !deviceEntityMap.has(selectedDeviceEntity.id)) { |
| | | closePopup() |
| | | } |
| | | } |
| | | |
| | | const getDefenseZonePositions = geom => { |
| | | const points = geomAnalysis(geom) |
| | | if (points.length < 3) return [] |
| | | const first = points[0] |
| | | const last = points[points.length - 1] |
| | | const list = |
| | | first && last && first.longitude === last.longitude && first.latitude === last.latitude |
| | | ? points.slice(0, -1) |
| | | : points |
| | | return list.map(item => Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude)) |
| | | } |
| | | |
| | | const renderZonePolygons = ({ zones, source, idPrefix, lineColor, fillGradient }) => { |
| | | if (!viewer || !source) return |
| | | registerRadialGradientMaterial() |
| | | const borderColor = Cesium.Color.fromCssColorString(lineColor) |
| | | const fillColorStart = Cesium.Color.fromCssColorString(fillGradient[0]).withAlpha(0.34) |
| | | const fillColorEnd = Cesium.Color.fromCssColorString(fillGradient[1]).withAlpha(0.34) |
| | | const fillMaterial = new RadialGradientMaterialProperty(fillColorStart, fillColorEnd) |
| | | zones.forEach((zone, index) => { |
| | | if (!zone?.geom) return |
| | | const positions = getDefenseZonePositions(zone.geom) |
| | | if (!positions.length) return |
| | | const entityId = `${idPrefix}-${zone.id ?? index}` |
| | | const linePositions = positions.length > 1 ? [...positions, positions[0]] : positions |
| | | source.entities.add({ |
| | | id: entityId, |
| | | polygon: { |
| | | hierarchy: new Cesium.PolygonHierarchy(positions), |
| | | material: fillMaterial, |
| | | outline: true, |
| | | outlineColor: borderColor, |
| | | heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, |
| | | }, |
| | | polyline: { |
| | | positions: linePositions, |
| | | clampToGround: true, |
| | | width: 2, |
| | | material: borderColor, |
| | | }, |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | const renderDefenseZones = zones => { |
| | | if (!viewer) return |
| | | if (!defenseZoneSource) { |
| | | defenseZoneSource = new Cesium.CustomDataSource('defenseZoneSource') |
| | | viewer.dataSources.add(defenseZoneSource) |
| | | } |
| | | clearDefenseZoneEntities() |
| | | defenseZoneSource.show = detailVisible.value |
| | | renderZonePolygons({ |
| | | zones, |
| | | source: defenseZoneSource, |
| | | idPrefix: 'defense-zone', |
| | | lineColor: '#19D266', |
| | | fillGradient: ['#2AEDBF', '#012B11'], |
| | | }) |
| | | } |
| | | |
| | | const renderPartitions = zones => { |
| | | if (!viewer) return |
| | | if (!partitionSource) { |
| | | partitionSource = new Cesium.CustomDataSource('partitionSource') |
| | | viewer.dataSources.add(partitionSource) |
| | | } |
| | | clearPartitionEntities() |
| | | partitionSource.show = detailVisible.value |
| | | renderZonePolygons({ |
| | | zones, |
| | | source: partitionSource, |
| | | idPrefix: 'partition-zone', |
| | | lineColor: '#FFCD2A', |
| | | fillGradient: ['#FFC609', '#583300'], |
| | | }) |
| | | } |
| | | |
| | | const loadDefenseZones = async () => { |
| | | if (!viewer) return |
| | | try { |
| | | const res = await fwDefenseZonePageApi({ current: 1, size: DEFAULT_ZONE_PAGE_SIZE }) |
| | | renderDefenseZones(res?.data?.data?.records ?? []) |
| | | } catch (error) { |
| | | renderDefenseZones([]) |
| | | } |
| | | } |
| | | |
| | | const loadPartitions = async () => { |
| | | if (!viewer) return |
| | | try { |
| | | const res = await fwAreaDividePageApi({ current: 1, size: DEFAULT_ZONE_PAGE_SIZE }) |
| | | renderPartitions(res?.data?.data?.records ?? []) |
| | | } catch (error) { |
| | | renderPartitions([]) |
| | | } |
| | | } |
| | | |
| | | const renderAggregation = list => { |
| | | if (!viewer) return |
| | | ensureCountyCenterMap() |
| | | if (!aggregationSource) { |
| | | aggregationSource = new Cesium.CustomDataSource('aggregationSource') |
| | | viewer.dataSources.add(aggregationSource) |
| | | } |
| | | clearAggregationEntities() |
| | | aggregationSource.show = clusterVisible.value |
| | | const countMap = new Map() |
| | | ; (list || []).forEach(item => { |
| | | if (!item?.type) return |
| | | countMap.set(item.type, Number(item.count ?? 0)) |
| | | }) |
| | | Array.from(countyCenterMap.entries()).forEach(([name, center], index) => { |
| | | const position = Cesium.Cartesian3.fromDegrees(center.longitude, center.latitude, 0) |
| | | const count = countMap.get(name) ?? 0 |
| | | aggregationSource.entities.add({ |
| | | id: `aggregation-${name}-${index}`, |
| | | position, |
| | | billboard: { |
| | | image: aggregationIcon, |
| | | width: 66.73, |
| | | height: 43, |
| | | verticalOrigin: Cesium.VerticalOrigin.BOTTOM, |
| | | heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, |
| | | }, |
| | | label: { |
| | | text: `${count}`, |
| | | fillColor: Cesium.Color.WHITE, |
| | | style: Cesium.LabelStyle.FILL_AND_OUTLINE, |
| | | verticalOrigin: Cesium.VerticalOrigin.CENTER, |
| | | horizontalOrigin: Cesium.HorizontalOrigin.CENTER, |
| | | font: '11pt Source Han Sans CN', |
| | | eyeOffset: new Cesium.Cartesian3(0, 0, -20), // 让label "浮" 在广告牌前面 |
| | | |
| | | pixelOffset: new Cesium.Cartesian2(0, -35), |
| | | disableDepthTestDistance: Number.POSITIVE_INFINITY, |
| | | heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, |
| | | }, |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | const getPickedDevice = picks => { |
| | | for (const pick of picks) { |
| | | const entityId = typeof pick?.id === 'string' ? pick.id : pick?.id?.id |
| | | if (entityId && deviceEntityMap.has(entityId)) { |
| | | return deviceEntityMap.get(entityId) |
| | | } |
| | | } |
| | | return null |
| | | } |
| | | |
| | | const updatePopupPosition = () => { |
| | | if (!viewer || !selectedDeviceEntity) return |
| | | const cartesian = |
| | | selectedDeviceEntity.position?.getValue?.(Cesium.JulianDate.now()) || |
| | | selectedDeviceEntity.position?._value |
| | | if (!cartesian) return |
| | | const screenPosition = viewer.scene.cartesianToCanvasCoordinates(cartesian) |
| | | if (!screenPosition) return |
| | | popupPosition.value = { x: screenPosition.x, y: screenPosition.y } |
| | | } |
| | | |
| | | const startPopupRender = () => { |
| | | if (!viewer || popupRenderHandler) return |
| | | popupRenderHandler = () => updatePopupPosition() |
| | | viewer.scene.postRender.addEventListener(popupRenderHandler) |
| | | updatePopupPosition() |
| | | } |
| | | |
| | | const stopPopupRender = () => { |
| | | if (!viewer || !popupRenderHandler) return |
| | | viewer.scene.postRender.removeEventListener(popupRenderHandler) |
| | | popupRenderHandler = null |
| | | } |
| | | |
| | | const handleDeviceClick = movement => { |
| | | if (!viewer) return |
| | | const picks = viewer.scene.drillPick(movement.position) || [] |
| | | const pickedDevice = getPickedDevice(picks) |
| | | if (!pickedDevice) { |
| | | closePopup() |
| | | return |
| | | } |
| | | selectedDevice.value = pickedDevice.data |
| | | selectedDeviceEntity = pickedDevice.entity |
| | | startPopupRender() |
| | | } |
| | | |
| | | const initDeviceClickHandler = () => { |
| | | if (deviceClickHandler || !viewer) return |
| | | deviceClickHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas) |
| | | deviceClickHandler.setInputAction(handleDeviceClick, Cesium.ScreenSpaceEventType.LEFT_CLICK) |
| | | } |
| | | |
| | | const destroyDeviceClickHandler = () => { |
| | | deviceClickHandler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK) |
| | | deviceClickHandler?.destroy() |
| | | deviceClickHandler = null |
| | | } |
| | | |
| | | function closePopup () { |
| | | selectedDevice.value = null |
| | | selectedDeviceEntity = null |
| | | stopPopupRender() |
| | | } |
| | | |
| | | const popupPosition = ref({ x: 0, y: 0 }) |
| | | const popupVisible = computed(() => Boolean(selectedDevice.value)) |
| | | const popupStyle = computed(() => ({ |
| | | left: `${popupPosition.value.x}px`, |
| | | top: `${popupPosition.value.y}px`, |
| | | })) |
| | | |
| | | const POPUP_TITLE_MAX = 12 |
| | | const popupTitle = computed(() => selectedDevice.value?.deviceName || selectedDevice.value?.deviceModel || '-') |
| | | const popupTitleOverflow = computed(() => popupTitle.value.length > POPUP_TITLE_MAX) |
| | | const popupTitleDisplay = computed(() => { |
| | | if (!popupTitleOverflow.value) return popupTitle.value |
| | | return `${popupTitle.value.slice(0, POPUP_TITLE_MAX)}……` |
| | | }) |
| | | const popupStatusText = computed(() => { |
| | | const status = selectedDevice.value?.status |
| | | if (status === 0) return '在线' |
| | | if (status === 1) return '离线' |
| | | if (status === 2) return '故障' |
| | | if (status === 3) return '报废' |
| | | return '-' |
| | | }) |
| | | const popupStatusClass = computed(() => (selectedDevice.value?.status === 0 ? 'online' : '')) |
| | | const popupActionText = computed(() => { |
| | | const workMode = selectedDevice.value?.workMode |
| | | if (workMode === 1 || workMode === '1') return '侦测中' |
| | | if (workMode === 2 || workMode === '2') return '信号干扰中' |
| | | if (workMode === 3 || workMode === '3') return '诱导驱离中' |
| | | if (workMode === 4 || workMode === '4') return '待机' |
| | | return workMode || '-' |
| | | }) |
| | | const popupActionClass = computed(() => { |
| | | const workMode = selectedDevice.value?.workMode |
| | | if (workMode === 1 || workMode === '1') return 'is-detecting' |
| | | if (workMode === 2 || workMode === '2') return 'is-jamming' |
| | | if (workMode === 3 || workMode === '3') return 'is-driving' |
| | | if (workMode === 4 || workMode === '4') return 'is-standby' |
| | | return 'is-standby' |
| | | }) |
| | | const popupTypeText = computed(() => { |
| | | const type = selectedDevice.value?.deviceType |
| | | if (type === 1 || type === '1') return '便捷侦测箱' |
| | | if (type === 2 || type === '2') return '反制枪' |
| | | if (type === 3 || type === '3') return '察打一体' |
| | | return type || '-' |
| | | }) |
| | | const popupBatteryText = computed(() => { |
| | | const val = selectedDevice.value?.batteryPct |
| | | if (val == null) return '-' |
| | | return `${val}%` |
| | | }) |
| | | const popupAzimuthText = computed(() => { |
| | | const val = selectedDevice.value?.azimuth |
| | | if (val == null) return '-' |
| | | return `${val}°` |
| | | }) |
| | | const popupElevationText = computed(() => { |
| | | const val = selectedDevice.value?.elevation |
| | | if (val == null) return '-' |
| | | return `${val}°` |
| | | }) |
| | | const popupDetectCountText = computed(() => { |
| | | const val = selectedDevice.value?.detectTargetCnt |
| | | if (val == null) return '-' |
| | | return `${val}台` |
| | | }) |
| | | const popupRangeText = computed(() => { |
| | | const val = selectedDevice.value?.effectiveRangeKm |
| | | if (val == null) return '-' |
| | | return `${val}KM` |
| | | }) |
| | | |
| | | const renderCommandPosts = list => { |
| | | if (!viewer) return |
| | | if (!commandPostSource) { |
| | | commandPostSource = new Cesium.CustomDataSource('commandPostSource') |
| | | viewer.dataSources.add(commandPostSource) |
| | | } |
| | | clearCommandPostEntities() |
| | | commandPostSource.show = detailVisible.value |
| | | ; (list || []).forEach((item, index) => { |
| | | const position = getDevicePosition(item) |
| | | if (!position) return |
| | | commandPostSource.entities.add({ |
| | | id: `command-post-${item.id ?? index}`, |
| | | position: Cesium.Cartesian3.fromDegrees(position.longitude, position.latitude, 0), |
| | | billboard: { |
| | | image: commandPostIcon, |
| | | width: 40, |
| | | height: 56, |
| | | verticalOrigin: Cesium.VerticalOrigin.BOTTOM, |
| | | heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, |
| | | }, |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | const loadAggregation = async () => { |
| | | try { |
| | | const res = await cockpitAggregationApi() |
| | | renderAggregation(res?.data?.data ?? []) |
| | | } catch (error) { |
| | | renderAggregation([]) |
| | | } |
| | | } |
| | | |
| | | const loadCommandPosts = async () => { |
| | | try { |
| | | const res = await fwDefenseSceneListApi() |
| | | renderCommandPosts(res?.data?.data ?? []) |
| | | } catch (error) { |
| | | renderCommandPosts([]) |
| | | } |
| | | } |
| | | |
| | | |
| | | watch( |
| | | () => props.onlineDevices, |
| | |
| | | showLayerPanel.value = !showLayerPanel.value |
| | | } |
| | | |
| | | const updateStageDisplay = stage => { |
| | | const showCluster = stage === 'cluster' |
| | | setClusterVisibility(showCluster) |
| | | setDetailVisibility(!showCluster) |
| | | } |
| | | |
| | | const handleMapReady = ({ viewer: mapViewer }) => { |
| | | viewer = mapViewer |
| | | const height = viewer?.camera?.positionCartographic?.height |
| | | const stage = height != null && height >= 100000 ? 'cluster' : 'detail' |
| | | updateStageDisplay(stage) |
| | | renderDeviceEntities(props.onlineDevices) |
| | | loadDefenseZones() |
| | | loadPartitions() |
| | | loadAggregation() |
| | | loadCommandPosts() |
| | | initDeviceClickHandler() |
| | | } |
| | | |
| | | const handleStageChange = stage => { |
| | | updateStageDisplay(stage) |
| | | } |
| | | |
| | | const handleClickOutside = event => { |
| | | if (!showLayerPanel.value) return |
| | | const target = event.target |
| | |
| | | |
| | | onMounted(() => { |
| | | document.addEventListener('click', handleClickOutside) |
| | | viewInstance = new PublicCesium({ |
| | | dom: props.containerId, |
| | | flatMode: false, |
| | | terrain: false, |
| | | layerMode: 4, |
| | | contour: false, |
| | | }) |
| | | |
| | | viewer = viewInstance.getViewer() |
| | | renderDeviceEntities(props.onlineDevices) |
| | | const map = mapRef.value?.getMap() |
| | | if (map?.viewer) handleMapReady(map) |
| | | }) |
| | | |
| | | onBeforeUnmount(() => { |
| | | document.removeEventListener('click', handleClickOutside) |
| | | clearDeviceEntities() |
| | | if (viewInstance) { |
| | | viewInstance?.viewerDestroy() |
| | | viewInstance = null |
| | | } |
| | | |
| | | clearDefenseZoneEntities() |
| | | clearPartitionEntities() |
| | | clearAggregationEntities() |
| | | clearCommandPostEntities() |
| | | closePopup() |
| | | destroyDeviceClickHandler() |
| | | viewer = null |
| | | }) |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .map-shell { |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .map-container { |
| | | position: absolute; |
| | | top: 0; |
| | |
| | | height: 100%; |
| | | } |
| | | |
| | | .device-popup { |
| | | position: absolute; |
| | | transform: translate(-50%, calc(-100% - 72px)); |
| | | width: 202px; |
| | | padding: 0 16px 20px; |
| | | border-radius: 16px; |
| | | background: rgba(5, 5, 15, 0.7); |
| | | backdrop-filter: blur(16px); |
| | | color: #C3C3DD; |
| | | font-family: Source Han Sans CN, Source Han Sans CN; |
| | | font-size: 12px; |
| | | pointer-events: auto; |
| | | z-index: 11; |
| | | box-sizing: border-box; |
| | | |
| | | &::after { |
| | | content: ""; |
| | | position: absolute; |
| | | left: 50%; |
| | | bottom: -8px; |
| | | transform: translateX(-50%); |
| | | width: 0; |
| | | height: 0; |
| | | border-left: 8px solid transparent; |
| | | border-right: 8px solid transparent; |
| | | border-top: 8px solid rgba(5, 5, 15, 0.7); |
| | | } |
| | | |
| | | .device-popup__header { |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | position: relative; |
| | | |
| | | font-weight: bold; |
| | | font-size: 14px; |
| | | color: #FFFFFF; |
| | | |
| | | &::after { |
| | | content: ""; |
| | | position: absolute; |
| | | left: 0; |
| | | bottom: 0; |
| | | width: 50px; |
| | | height: 2px; |
| | | background: #284FE3; |
| | | box-shadow: 0px 3px 2px 0px rgba(15, 89, 255, 0.1), 0px 7px 5px 0px rgba(15, 89, 255, 0.15), 0px 13px 10px 0px rgba(15, 89, 255, 0.18), 0px 22px 18px 0px rgba(15, 89, 255, 0.21), 0px 42px 33px 0px rgba(15, 89, 255, 0.26), 0px 100px 80px 0px rgba(15, 89, 255, 0.36); |
| | | border-radius: 5px 5px 0px 0px; |
| | | } |
| | | |
| | | &::before { |
| | | content: ""; |
| | | position: absolute; |
| | | left: 55px; |
| | | right: 0; |
| | | bottom: 0; |
| | | height: 2px; |
| | | background: #323245; |
| | | border-radius: 0px 0px 5px 5px; |
| | | } |
| | | |
| | | .device-popup__title-tooltip { |
| | | flex: 1; |
| | | min-width: 0; |
| | | display: block; |
| | | } |
| | | |
| | | .device-popup__title { |
| | | display: inline-block; |
| | | max-width: 100%; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .device-popup__close { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | .device-popup__type { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 6px; |
| | | font-size: 12px; |
| | | margin-top: 8px; |
| | | margin-bottom: 10px; |
| | | color: #d2d7df; |
| | | |
| | | .label { |
| | | color: #9aa4b2; |
| | | } |
| | | } |
| | | |
| | | .device-popup__subtitle { |
| | | display: inline-flex; |
| | | align-items: center; |
| | | gap: 6px; |
| | | padding: 2px 10px; |
| | | border-radius: 999px; |
| | | background: rgba(255, 255, 255, 0.06); |
| | | font-size: 12px; |
| | | margin-bottom: 10px; |
| | | |
| | | .device-popup__dot { |
| | | width: 6px; |
| | | height: 6px; |
| | | border-radius: 50%; |
| | | background: #6b7685; |
| | | |
| | | &.is-detecting { |
| | | background: #35f08c; |
| | | box-shadow: 0 0 6px rgba(53, 240, 140, 0.8); |
| | | } |
| | | |
| | | &.is-jamming { |
| | | background: #ff4444; |
| | | box-shadow: 0 0 6px rgba(255, 68, 68, 0.7); |
| | | } |
| | | |
| | | &.is-driving { |
| | | background: #ffb020; |
| | | box-shadow: 0 0 6px rgba(255, 176, 32, 0.7); |
| | | } |
| | | |
| | | &.is-standby { |
| | | background: #9aa4b2; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .device-popup__rows { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 6px; |
| | | font-size: 12px; |
| | | color: #d2d7df; |
| | | |
| | | .device-popup__row { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 10px; |
| | | |
| | | .device-popup__col { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | &:last-child { |
| | | justify-content: flex-end; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .value { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .value.online { |
| | | color: #35f08c; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .layer-control-root { |
| | | position: absolute; |
| | | left: 411px; |
| | | left: 337px; |
| | | bottom: 22px; |
| | | z-index: 9; |
| | | transition: transform 0.3s ease-in-out; |
| | | pointer-events: none; |
| | | |
| | | &.collapsed { |
| | | transform: translateX(-401px); |
| | | transform: translateX(-317px); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .layer-control { |
| | | width: 34px; |
| | | height: 34px; |
| | | width: 46px; |
| | | height: 46px; |
| | | cursor: pointer; |
| | | |
| | | img { |
| | |
| | | display: flex; |
| | | flex-direction: column; |
| | | position: absolute; |
| | | left: 46px; |
| | | left: 66px; |
| | | bottom: 0; |
| | | width: 160px; |
| | | max-height: 442px; |
| | |
| | | line-height: 30px !important; |
| | | |
| | | .el-tree-node__content { |
| | | padding-left: 0 !important; |
| | | display: flex; |
| | | align-items: center; |
| | | height: 40px !important; |
| | |
| | | .el-tree-node__children { |
| | | .el-tree-node__content { |
| | | border: none; |
| | | } |
| | | } |
| | | |
| | | &:focus { |
| | | .el-tree-node__content { |
| | | background: transparent !important; |
| | | } |
| | | } |
| | | } |
| | |
| | | display: none; |
| | | } |
| | | |
| | | .layer-panel :deep(.el-tree-node__content:hover) { |
| | | .layer-panel :deep(.el-tree-node__content:hover), |
| | | .layer-panel :deep(.el-tree-node__content:focus) { |
| | | background: transparent !important; |
| | | } |
| | | |
| | |
| | | --> |
| | | <template> |
| | | <div class="map-container"> |
| | | <div class="viewer-container work-cesium" id="viewer-container"> |
| | | <div class="viewer-container command-cesium" id="viewer-container"> |
| | | <div class="content"> |
| | | <slot name="content"></slot> |
| | | </div> |
| New file |
| | |
| | | import * as Cesium from 'cesium' |
| | | import jaGeojsonRaw from '@/assets/geojson/ja.geojson?raw' |
| | | |
| | | const DEFAULT_OPTIONS = { |
| | | strokeColor: '#00F9EC', |
| | | strokeWidth: 2, |
| | | fillColor: '#FFFFFF', |
| | | fillAlpha: 0.05, |
| | | labelFont: '14px Source Han Sans CN', |
| | | labelFill: '#FFFFFF', |
| | | labelOutline: '#18305C', |
| | | labelOutlineAlpha: 1, |
| | | zoomTo: true, |
| | | } |
| | | |
| | | export const loadJaAdminBoundary = async (viewer, options = {}) => { |
| | | if (!viewer) return null |
| | | const config = { ...DEFAULT_OPTIONS, ...options } |
| | | const geojson = JSON.parse(jaGeojsonRaw) |
| | | |
| | | const boundarySource = await Cesium.GeoJsonDataSource.load(geojson, { |
| | | stroke: Cesium.Color.fromCssColorString(config.strokeColor), |
| | | strokeWidth: config.strokeWidth, |
| | | fill: Cesium.Color.fromCssColorString(config.fillColor).withAlpha(config.fillAlpha), |
| | | clampToGround: true, |
| | | }) |
| | | viewer.dataSources.add(boundarySource) |
| | | |
| | | const lineSource = new Cesium.CustomDataSource('jaBoundaryLineSource') |
| | | boundarySource.entities.values.forEach(entity => { |
| | | const polygon = entity.polygon |
| | | if (!polygon) return |
| | | const hierarchy = polygon.hierarchy?.getValue?.(viewer.clock.currentTime) |
| | | const positions = hierarchy?.positions |
| | | if (!positions?.length) return |
| | | lineSource.entities.add({ |
| | | polyline: { |
| | | positions, |
| | | clampToGround: true, |
| | | width: config.strokeWidth, |
| | | material: Cesium.Color.fromCssColorString(config.strokeColor), |
| | | }, |
| | | }) |
| | | }) |
| | | viewer.dataSources.add(lineSource) |
| | | |
| | | const labelSource = new Cesium.CustomDataSource('jaBoundaryLabelSource') |
| | | geojson.features?.forEach(feature => { |
| | | const name = feature?.properties?.name |
| | | const point = feature?.properties?.centroid || feature?.properties?.center |
| | | if (!name || !Array.isArray(point) || point.length < 2) return |
| | | labelSource.entities.add({ |
| | | position: Cesium.Cartesian3.fromDegrees(point[0], point[1]), |
| | | label: { |
| | | text: name, |
| | | font: config.labelFont, |
| | | fillColor: Cesium.Color.fromCssColorString(config.labelFill), |
| | | outlineColor: Cesium.Color.fromCssColorString(config.labelOutline).withAlpha( |
| | | config.labelOutlineAlpha |
| | | ), |
| | | outlineWidth: 2, |
| | | style: Cesium.LabelStyle.FILL_AND_OUTLINE, |
| | | heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, |
| | | verticalOrigin: Cesium.VerticalOrigin.CENTER, |
| | | horizontalOrigin: Cesium.HorizontalOrigin.CENTER, |
| | | disableDepthTestDistance: Number.POSITIVE_INFINITY, |
| | | }, |
| | | }) |
| | | }) |
| | | viewer.dataSources.add(labelSource) |
| | | |
| | | if (config.zoomTo) { |
| | | await viewer.flyTo(boundarySource, { |
| | | duration: 0, |
| | | offset: new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-75), 0), |
| | | }) |
| | | } |
| | | |
| | | return { boundarySource, lineSource, labelSource } |
| | | } |
| | | |
| | | export const removeJaAdminBoundary = (viewer, sources) => { |
| | | if (!viewer || !sources) return |
| | | const { boundarySource, lineSource, labelSource } = sources |
| | | if (boundarySource) viewer.dataSources.remove(boundarySource) |
| | | if (lineSource) viewer.dataSources.remove(lineSource) |
| | | if (labelSource) viewer.dataSources.remove(labelSource) |
| | | } |
| | |
| | | <div class="detail-container"> |
| | | <!-- 左侧审批记录 --> |
| | | <div class="detail-left"> |
| | | <div class="label">审批记录</div> |
| | | <el-steps :active="activeStep" direction="vertical" align-center> |
| | | <el-step v-for="(step, index) in steps" :key="index" :title="step.title"> |
| | | <template #description> |
| | | <div class="step-person">{{ step.person }}</div> |
| | | <div class="step-time">{{ step.time }}</div> |
| | | </template> |
| | | </el-step> |
| | | </el-steps> |
| | | <AuditRecord :demand-id="demandId" /> |
| | | </div> |
| | | <!-- 右侧表单数据 --> |
| | | <div class="detail-right"> |
| | | <!-- 拒绝申请--> |
| | | <div class="reject-reason-container" v-if="detailDemandStatus === '3'"> |
| | | <div class="label">拒绝原因</div> |
| | | <div class="reject-reason"> |
| | | {{reasonForRejection}} |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <div class="label">需求详情</div> |
| | | <div class="requirementsDetailsBox"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <!-- 申请中--> |
| | | <div v-if="detailDemandStatus === '1'"> |
| | | <div class="label">数据上传</div> |
| | | <div class="upload-container"> |
| | | <el-upload |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="detailDemandStatus === '2'"> |
| | | <div class="label">数据详情</div> |
| | | <el-table :data="tableData" border style="width: 100%"> |
| | | <el-table-column prop="fileOriginalName" label="文件名称" /> |
| | | <el-table-column prop="fileSize" label="文件大小" /> |
| | | <el-table-column fixed="right" label="操作" min-width="100"> |
| | | <template #default="scope"> |
| | | <el-button link type="text" @click="downloadFileFromTable(scope.row)">下载</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <template #footer> |
| | | <el-button class="save-btn" color="#4C34FF" @click="rejectTheApplication">拒绝申请</el-button> |
| | | <el-button color="#F2F3F5" @click="approvedByTheReview">审核通过</el-button> |
| | | <template v-if="detailDemandStatus === '1'"> |
| | | <el-button class="save-btn" color="#4C34FF" @click="rejectTheApplication">拒绝申请</el-button> |
| | | <el-button color="#F2F3F5" @click="approvedByTheReview">审核通过</el-button> |
| | | </template> |
| | | <template v-if="detailDemandStatus === '2'"> |
| | | <el-button class="save-btn" color="#4C34FF" @click="downloadAllFiles">全部下载</el-button> |
| | | </template> |
| | | <template v-if="detailDemandStatus === '3'"> |
| | | <el-button class="save-btn" color="#4C34FF" @click="visible =false">关闭</el-button> |
| | | </template> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | |
| | | putFileAttachApi, |
| | | gdSupplyDemandAuditPassApi, |
| | | gdSupplyDemandAuditRejectApi, |
| | | gdSupplyDemandAuditListApi |
| | | gdSupplyDemandAuditAttachmentListApi, |
| | | } from '@/views/orderView/orderDataManage/supplyAdd/supplyAddApi' |
| | | import { ElMessage } from 'element-plus' |
| | | import reasonForRejectionDialog from './reasonForRejectionDialog.vue' |
| | | import reasonForRejectionDialog from '@/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue' |
| | | import AuditRecord from '@/views/orderView/orderDataManage/supplyAdd/auditRecord.vue' // 导入新组件 |
| | | |
| | | const emit = defineEmits(['success']) |
| | | const dictObj = inject('dictObj') |
| | | const deptTree = inject('deptTree') |
| | | const detailDemandStatus = inject('detailDemandStatus') |
| | | const reasonForRejection = inject('reasonForRejection') |
| | | const demandId = ref('') |
| | | const visible = defineModel() // 弹框显隐 |
| | | const formData = ref({}) // 表单数据 |
| | |
| | | const responseData = ref([]) |
| | | // 拒绝申请弹框控制 |
| | | const rejectionDialogVisible = ref(false) // 拒绝申请弹框显隐 |
| | | // 步骤条数据 |
| | | const steps = ref([ |
| | | { title: '需求申请', person: '', time: '' }, |
| | | { title: '审核通过', person: '', time: '' } |
| | | ]) |
| | | // 当前激活步骤 |
| | | const activeStep = ref(0) |
| | | |
| | | const tableData = ref([]) // 附件表格数据 |
| | | // 文件选择变化 |
| | | const handleFileChange = (file, fileList) => { |
| | | if (fileList.length > 0) { |
| | |
| | | } |
| | | } |
| | | |
| | | // 从表格下载文件 |
| | | const downloadFileFromTable = file => { |
| | | if (file.fileUrl) { |
| | | // 创建一个隐藏的a标签来触发下载 |
| | | const a = document.createElement('a') |
| | | a.href = file.fileUrl |
| | | a.download = file.name || 'attachment' |
| | | document.body.appendChild(a) |
| | | a.click() |
| | | document.body.removeChild(a) |
| | | } else { |
| | | ElMessage.warning('文件链接无效') |
| | | } |
| | | } |
| | | |
| | | // 下载所有文件 |
| | | const downloadAllFiles = () => { |
| | | if (!tableData.value || tableData.value.length === 0) { |
| | | ElMessage.warning('没有可下载的文件') |
| | | return |
| | | } |
| | | |
| | | // 统计有效文件数量 |
| | | const validFiles = tableData.value.filter(file => file.fileUrl) |
| | | if (validFiles.length === 0) { |
| | | ElMessage.warning('所有文件链接均无效') |
| | | return |
| | | } |
| | | |
| | | ElMessage.success(`开始下载${validFiles.length}个文件`) |
| | | |
| | | // 依次下载每个文件(添加延迟以避免浏览器限制) |
| | | validFiles.forEach((file, index) => { |
| | | setTimeout(() => { |
| | | if (file.fileUrl) { |
| | | const a = document.createElement('a') |
| | | a.href = file.fileUrl |
| | | a.download = file.name || `attachment_${index + 1}` |
| | | document.body.appendChild(a) |
| | | a.click() |
| | | document.body.removeChild(a) |
| | | } |
| | | }, index * 300) // 300ms delay between downloads |
| | | }) |
| | | } |
| | | |
| | | // 根据部门ID获取部门名称 |
| | | function getDeptNameById(deptId, deptList) { |
| | | // 处理类型转换,确保比较的是相同类型 |
| | |
| | | if (row?.id) { |
| | | await loadDetail(row.id) |
| | | demandId.value = row.id |
| | | console.log('row.id', demandId.value) |
| | | } |
| | | visible.value = true |
| | | } |
| | |
| | | data.responsibleDeptName = getDeptNameById(data.responsibleDeptId, deptTree.value) |
| | | } |
| | | formData.value = data |
| | | |
| | | // 加载审核记录 |
| | | await loadAuditRecords(id) |
| | | |
| | | // 加载附件数据 |
| | | await loadAttachments(id) |
| | | } |
| | | |
| | | // 加载审核记录 |
| | | async function loadAuditRecords(demandId) { |
| | | // 加载附件数据 |
| | | async function loadAttachments(demandId) { |
| | | try { |
| | | const res = await gdSupplyDemandAuditListApi({ demandId }) |
| | | const auditRecords = res?.data?.data ?? [] |
| | | |
| | | // 处理审核记录为步骤格式 |
| | | processAuditRecords(auditRecords) |
| | | const res = await gdSupplyDemandAuditAttachmentListApi({ demandId: demandId }) |
| | | const attachments = res?.data?.data ?? [] |
| | | |
| | | // 格式化附件数据以匹配表格结构 |
| | | tableData.value = attachments.map(attachment => ({ |
| | | fileOriginalName: attachment.fileOriginalName , |
| | | fileSize: attachment.fileSize ? `${attachment.fileSize}M` : '', |
| | | fileUrl: attachment.fileUrl, |
| | | id: attachment.id, |
| | | })) |
| | | } catch (error) { |
| | | console.error('加载审核记录失败:', error) |
| | | ElMessage.error('加载审核记录失败,请重试') |
| | | // 保持默认步骤,不做清空 |
| | | activeStep.value = 0 |
| | | console.error('加载附件数据失败:', error) |
| | | ElMessage.error('加载附件数据失败,请重试') |
| | | tableData.value = [] |
| | | } |
| | | } |
| | | |
| | | // 处理审核记录为步骤格式 |
| | | function processAuditRecords(records) { |
| | | // 重置为默认步骤结构 |
| | | steps.value = [ |
| | | { title: '需求申请', person: '', time: '' }, |
| | | { title: '审核通过', person: '', time: '' } |
| | | ] |
| | | |
| | | if (!records || records.length === 0) { |
| | | // 没有审核记录,保持默认步骤 |
| | | activeStep.value = 0 |
| | | return |
| | | } |
| | | |
| | | // 按创建时间排序(最新的在最后) |
| | | const sortedRecords = [...records].sort((a, b) => new Date(a.createTime) - new Date(b.createTime)) |
| | | |
| | | // 处理需求申请步骤(第一个步骤) |
| | | const demandRecord = sortedRecords.find(record => record.auditStatus === '0') || sortedRecords[0] |
| | | if (demandRecord) { |
| | | steps.value[0] = { |
| | | title: '需求申请', |
| | | person: demandRecord.createUser ? `${demandRecord.createUser}` : '', |
| | | time: demandRecord.createTime ? demandRecord.createTime : '' |
| | | } |
| | | } |
| | | |
| | | // 处理审核步骤(第二个步骤) |
| | | const latestRecord = sortedRecords[sortedRecords.length - 1] |
| | | if (latestRecord) { |
| | | // 根据最新审核结果设置标题 |
| | | let auditTitle = '审核通过' |
| | | if (latestRecord.auditStatus === '2') { |
| | | auditTitle = '审核驳回' |
| | | // 更新第二个步骤的标题为审核驳回 |
| | | steps.value[1].title = auditTitle |
| | | } |
| | | |
| | | // 添加审核意见(如果有) |
| | | if (latestRecord.auditOpinion) { |
| | | steps.value[1].title += ` - ${latestRecord.auditOpinion}` |
| | | } |
| | | |
| | | // 更新审核步骤的信息 |
| | | steps.value[1].person = latestRecord.createUser ? `${latestRecord.createUser}` : '' |
| | | steps.value[1].time = latestRecord.createTime ? latestRecord.createTime : '' |
| | | |
| | | // 根据最新审核结果设置activeStep |
| | | switch (latestRecord.auditStatus) { |
| | | case '0': |
| | | // 审核中,高亮第一个步骤 |
| | | activeStep.value = 0 |
| | | break |
| | | case '1': |
| | | // 审核通过,高亮第二个步骤 |
| | | activeStep.value = 1 |
| | | break |
| | | case '2': |
| | | // 审核驳回,高亮第二个步骤 |
| | | activeStep.value = 1 |
| | | break |
| | | default: |
| | | // 默认高亮第一个步骤 |
| | | activeStep.value = 0 |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // 拒绝申请 |
| | | const rejectTheApplication = () => { |
| | |
| | | // 处理拒绝申请确认 |
| | | const handleRejectionConfirm = reason => { |
| | | const id = [responseData.value.attachId] |
| | | console.log('demandId.value', demandId.value) |
| | | |
| | | gdSupplyDemandAuditRejectApi({ attachIds: id, auditOpinion: reason, demandId: demandId.value }) |
| | | .then(() => { |
| | | ElMessage.success('拒绝申请成功') |
| | |
| | | /* 右侧表单 */ |
| | | .detail-right { |
| | | width: 75%; |
| | | .reject-reason { |
| | | margin-bottom: 20px; |
| | | background: #f2f3f5; |
| | | border-radius: 2px 2px 2px 2px; |
| | | padding: 15px; |
| | | height: 100px; |
| | | } |
| | | .requirementsDetailsBox { |
| | | background: #F2F3F5; |
| | | background: #f2f3f5; |
| | | border-radius: 2px 2px 2px 2px; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | /* 步骤条样式 */ |
| | | :deep(.el-steps) { |
| | | align-items: flex-start; |
| | | } |
| | | |
| | | :deep(.el-step) { |
| | | margin-bottom: 90px; |
| | | } |
| | | |
| | | :deep(.el-step__title) { |
| | | font-size: 14px; |
| | | font-weight: 500; |
| | | margin-bottom: 8px; |
| | | } |
| | | |
| | | /* 步骤描述 */ |
| | | .step-person { |
| | | font-size: 13px; |
| | | color: #333; |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | .step-time { |
| | | font-size: 12px; |
| | | color: #909399; |
| | | } |
| | | |
| | | /* 表单样式 */ |
| | | .label { |
| | | font-weight: 500; |
| | | margin-bottom: 8px; |
| | | color: #333; |
| | | } |
| | | |
| | | /* 上传容器样式 */ |
| | | .upload-container { |
| | | padding: 15px; |
| | | background: #F2F3F5; |
| | | background: #f2f3f5; |
| | | border-radius: 2px 2px 2px 2px; |
| | | } |
| | | |
| | | .uploaded-files { |
| | | margin-top: 15px; |
| | | |
| | | |
| | | h4 { |
| | | margin-bottom: 10px; |
| | | font-size: 14px; |
| | | color: #333333; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | |
| | | .file-item { |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | background: white; |
| | | border-radius: 4px; |
| | | margin-bottom: 5px; |
| | | |
| | | |
| | | span { |
| | | flex: 1; |
| | | color: #333; |
| | |
| | | :deep(.el-upload-list) { |
| | | margin-top: 10px; |
| | | } |
| | | </style> |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="audit-record-container"> |
| | | <div class="label">审批记录</div> |
| | | <el-steps :active="activeStep" direction="vertical" align-center> |
| | | <el-step v-for="(step, index) in steps" :key="index" :title="step.title"> |
| | | <template #description> |
| | | <div class="step-person">{{ step.person }}</div> |
| | | <div class="step-time">{{ step.time }}</div> |
| | | </template> |
| | | </el-step> |
| | | </el-steps> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, watch } from 'vue' |
| | | import { gdSupplyDemandAuditListApi } from '@/views/orderView/orderDataManage/supplyAdd/supplyAddApi' |
| | | |
| | | const props = defineProps({ |
| | | demandId: { |
| | | type: [String, Number], |
| | | required: true |
| | | } |
| | | }) |
| | | const detailDemandStatus = inject('detailDemandStatus') |
| | | const reasonForRejection = inject('reasonForRejection') |
| | | // 步骤条数据 |
| | | const steps = ref([ |
| | | { title: '需求申请', person: '', time: '' }, |
| | | { title: '审核通过', person: '', time: '' } |
| | | ]) |
| | | |
| | | // 当前激活步骤 |
| | | const activeStep = ref(0) |
| | | |
| | | // 监听 demandId 变化 |
| | | watch(() => props.demandId, (newVal) => { |
| | | if (newVal) { |
| | | loadAuditRecords(newVal) |
| | | } |
| | | }, { immediate: true }) |
| | | |
| | | // 加载审核记录 |
| | | async function loadAuditRecords(demandId) { |
| | | try { |
| | | const res = await gdSupplyDemandAuditListApi({ demandId }) |
| | | const auditRecords = res?.data?.data ?? [] |
| | | |
| | | // 查找拒绝原因(auditStatus为2的记录的auditOpinion) |
| | | const rejectedRecord = auditRecords.find(record => record.auditStatus === '2') |
| | | reasonForRejection.value = rejectedRecord?.auditOpinion || '' |
| | | console.log('reasonForRejection', reasonForRejection.value) |
| | | |
| | | // 处理审核记录为步骤格式 |
| | | processAuditRecords(auditRecords) |
| | | } catch (error) { |
| | | console.error('加载审核记录失败:', error) |
| | | // 保持默认步骤 |
| | | activeStep.value = 0 |
| | | reasonForRejection.value = '' |
| | | } |
| | | } |
| | | |
| | | // 处理审核记录为步骤格式 |
| | | function processAuditRecords(records) { |
| | | // 重置为默认步骤结构 |
| | | steps.value = [ |
| | | { title: '需求申请', person: '', time: '' }, |
| | | { title: '审核通过', person: '', time: '' } |
| | | ] |
| | | |
| | | if (!records || records.length === 0) { |
| | | // 没有审核记录,保持默认步骤 |
| | | activeStep.value = 0 |
| | | return |
| | | } |
| | | |
| | | // 按创建时间排序(最新的在最后) |
| | | const sortedRecords = [...records].sort((a, b) => new Date(a.createTime) - new Date(b.createTime)) |
| | | |
| | | // 处理需求申请步骤(第一个步骤) |
| | | const demandRecord = sortedRecords.find(record => record.auditStatus === '0') || sortedRecords[0] |
| | | if (demandRecord) { |
| | | steps.value[0] = { |
| | | title: '需求申请', |
| | | person: demandRecord.createUser ? `${demandRecord.createUser}` : '', |
| | | time: demandRecord.createTime ? demandRecord.createTime : '' |
| | | } |
| | | } |
| | | |
| | | // 处理审核步骤(第二个步骤) |
| | | const latestRecord = sortedRecords[sortedRecords.length - 1] |
| | | if (latestRecord) { |
| | | // 根据最新审核结果设置标题 |
| | | let auditTitle = '审核通过' |
| | | if (latestRecord.auditStatus === '2') { |
| | | auditTitle = '拒绝申请' |
| | | // 更新第二个步骤的标题为拒绝申请 |
| | | steps.value[1].title = auditTitle |
| | | } |
| | | |
| | | // 添加审核意见(如果有) |
| | | if (latestRecord.auditOpinion) { |
| | | steps.value[1].title |
| | | } |
| | | |
| | | // 更新审核步骤的信息 |
| | | steps.value[1].person = latestRecord.createUser ? `${latestRecord.createUser}` : '' |
| | | steps.value[1].time = latestRecord.createTime ? latestRecord.createTime : '' |
| | | |
| | | // 根据最新审核结果设置activeStep |
| | | switch (latestRecord.auditStatus) { |
| | | case '0': |
| | | // 审核中,高亮第一个步骤 |
| | | activeStep.value = 0 |
| | | break |
| | | case '1': |
| | | // 审核通过,高亮第二个步骤 |
| | | activeStep.value = 1 |
| | | break |
| | | case '2': |
| | | // 拒绝申请,高亮第二个步骤 |
| | | activeStep.value = 1 |
| | | break |
| | | default: |
| | | // 默认高亮第一个步骤 |
| | | activeStep.value = 0 |
| | | } |
| | | } |
| | | } |
| | | |
| | | defineExpose({ |
| | | loadAuditRecords |
| | | }) |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .audit-record-container { |
| | | .label { |
| | | font-weight: 500; |
| | | margin-bottom: 8px; |
| | | color: #333; |
| | | } |
| | | } |
| | | |
| | | /* 步骤条样式 */ |
| | | :deep(.el-steps) { |
| | | align-items: flex-start; |
| | | } |
| | | |
| | | :deep(.el-step) { |
| | | margin-bottom: 90px; |
| | | } |
| | | |
| | | :deep(.el-step__title) { |
| | | font-size: 14px; |
| | | font-weight: 500; |
| | | margin-bottom: 8px; |
| | | } |
| | | |
| | | /* 步骤描述 */ |
| | | .step-person { |
| | | font-size: 13px; |
| | | color: #333; |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | .step-time { |
| | | font-size: 12px; |
| | | color: #909399; |
| | | } |
| | | </style> |
| | |
| | | |
| | | <div class="gd-table-toolbar"> |
| | | <el-button :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">供需填报新增</el-button> |
| | | <!-- <el-button :icon="Delete" color="#4C34FF" :disabled="!selectedIds.length" @click="handleDelete()">删除</el-button>--> |
| | | </div> |
| | | |
| | | <div class="gd-table-container" v-loading="loading"> |
| | | <div class="gd-table-content gd-table-content-bg"> |
| | | <el-table class="gd-table" :data="list" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="46" /> |
| | | <el-table class="gd-table" :data="list"> |
| | | <el-table-column label="序号" width="60" align="center"> |
| | | <template #default="scope"> |
| | | {{ ((searchParams.current - 1) * searchParams.size + scope.$index + 1).toString().padStart(2, '0') }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="demandName" show-overflow-tooltip label="需求名称" /> |
| | | <el-table-column prop="demandType" show-overflow-tooltip label="需求类型"> |
| | | <template v-slot="{ row }"> |
| | |
| | | const total = ref(0) // 总条数 |
| | | const loading = ref(true) // 列表加载中 |
| | | const list = ref([]) // 列表数据 |
| | | const selectedIds = ref([]) // 勾选的ID列表 |
| | | const queryParamsRef = ref(null) // 查询表单实例 |
| | | const dialogRef = ref(null) // 弹框实例 |
| | | const dialogVisible = ref(false) |
| | |
| | | } |
| | | provide('deptTree', deptTree) |
| | | provide('treeProps', treeProps) |
| | | |
| | | const detailDemandStatus = ref('') |
| | | provide('detailDemandStatus', detailDemandStatus) |
| | | const reasonForRejection = ref('') //拒绝原因 |
| | | provide('reasonForRejection', reasonForRejection) |
| | | // 根据部门ID获取部门名称 |
| | | function getDeptNameById(deptId, deptList) { |
| | | if (!deptId || !Array.isArray(deptList)) return '' |
| | |
| | | |
| | | // 新增/编辑/查看 弹框 |
| | | function openForm(mode, row) { |
| | | detailDemandStatus.value = row?.demandStatus |
| | | // 对于所有审批相关状态(申请中、审核通过、审核拒绝)都使用申请详情弹框 |
| | | if (mode === 'view' && ['1', '2', '3'].includes(row?.demandStatus)) { |
| | | // 使用申请详情弹框 |
| | |
| | | |
| | | // 删除 |
| | | async function handleDelete(row) { |
| | | const tips = row ? '该条' : '选中的项' |
| | | await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', { |
| | | await ElMessageBox.confirm('确认删除该条记录吗?', '提示', { |
| | | type: 'warning', |
| | | customClass: 'gd-confirm-custom', |
| | | confirmButtonClass: 'gd-confirm-button', |
| | | cancelButtonClass: 'gd-confirm-cancel-button', |
| | | }) |
| | | const ids = row ? row.id : selectedIds.value.join(',') |
| | | await gdSupplyDemandRemoveApi({ ids }) |
| | | await gdSupplyDemandRemoveApi({ ids: row.id }) |
| | | ElMessage.success('删除成功') |
| | | selectedIds.value = [] |
| | | getList() |
| | | } |
| | | |
| | | // 勾选值设置 |
| | | function handleSelectionChange(rows) { |
| | | selectedIds.value = rows.map(item => item.id) |
| | | } |
| | | |
| | | |
| | | // 获取字典 |
| | | function getDictList() { |
| | |
| | | </div> |
| | | </div> |
| | | <template #footer> |
| | | <!-- <el-button @click="handleCancel">取消</el-button> --> |
| | | <el-button class="save-btn" color="#4C34FF" @click="handleConfirm">确认</el-button> |
| | | </template> |
| | | </el-dialog> |
| | |
| | | } |
| | | ) |
| | | |
| | | // 取消按钮点击事件 |
| | | const handleCancel = () => { |
| | | visible.value = false |
| | | reasonForRejection.value = '' |
| | | } |
| | | |
| | | // 确认按钮点击事件 |
| | | const handleConfirm = () => { |
| | |
| | | params, |
| | | }) |
| | | } |
| | | |
| | | // 获取供需需求审核附件列表 |
| | | export const gdSupplyDemandAuditAttachmentListApi = params => { |
| | | return request({ |
| | | url: `/drone-gd/orderdata/gdSupplyDemandAuditAttachment/list`, |
| | | method: 'get', |
| | | params, |
| | | }) |
| | | } |
| | |
| | | destroy-on-close |
| | | > |
| | | <div class="content" style="display: flex"> |
| | | <div class="processBox"> |
| | | <div v-for="(item, index) in processList">{{index}}-{{ item.flowName }}{{ item.flowDesc }}</div> |
| | | </div> |
| | | <div class="leftBox"> |
| | | <div class="detail-container" v-if="dialogReadonly"> |
| | | <el-row> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div id="mapContainer" class="gd-cesium"></div> |
| | | |
| | | <CommonCesiumMap |
| | | ref="mapRef" |
| | | class="leftMap gd-cesium" |
| | | :active="visible" |
| | | :flat-mode="false" |
| | | :terrain="true" |
| | | :layer-mode="4" |
| | | :boundary="false" |
| | | :zoomToBoundary="false" |
| | | /> |
| | | </div> |
| | | <div class="rightBox" v-if="!dialogReadonly"> |
| | | <div class="title">推荐设备</div> |
| | |
| | | import { computed, ref, onMounted, nextTick } from 'vue' |
| | | import { ElMessage } from 'element-plus' |
| | | import { dateRangeFormat, fieldRules, geomAnalysis, getDictLabel } from '@ztzf/utils' |
| | | import { gdWorkOrderDetailApi, gdWorkOrderHandleStatusApi, gdWorkOrderSaveApi } from './orderManageApi' |
| | | import { |
| | | gdWorkOrderDetailApi, |
| | | gdWorkOrderFlowListApi, |
| | | gdWorkOrderHandleStatusApi, |
| | | gdWorkOrderSaveApi, |
| | | } from './orderManageApi' |
| | | import { gdManageDeviceListApi } from './gdManageDeviceApi' |
| | | import { cartesian3Convert } from '@/utils/cesium/mapUtil' |
| | | import * as Cesium from 'cesium' |
| | | import { DrawPolygon } from '@/utils/cesium/DrawPolygon' |
| | | import { PublicCesium } from '@/utils/cesium/publicCesium' |
| | | import { pxToRem } from '@/utils/rem' |
| | | import dayjs from 'dayjs' |
| | | import RefuseOrderDialog from '@/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue' |
| | | import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue' |
| | | |
| | | // 初始化表单数据 |
| | | const initForm = () => ({ |
| | |
| | | recommendDeviceIds: '', |
| | | }) |
| | | |
| | | const mapRef = ref(null) |
| | | const rejectVisible = ref(false) |
| | | const dictObj = inject('dictObj') |
| | | const dateRange = ref([]) |
| | |
| | | } |
| | | ) |
| | | |
| | | const processList = ref([]) |
| | | function loadList() { |
| | | gdWorkOrderFlowListApi({ workOrderId: formData.value.id }).then(res => { |
| | | processList.value = res.data.data |
| | | }) |
| | | } |
| | | |
| | | // 加载详情 |
| | | async function loadDetail() { |
| | | if (!formData.value.id) return |
| | | loadList() |
| | | const res = await gdWorkOrderDetailApi({ id: formData.value.id }) |
| | | formData.value = res?.data?.data ?? {} |
| | | dateRange.value = [formData.value.executeStartTime, formData.value.executeEndTime] |
| | |
| | | |
| | | // 初始化地图实例 |
| | | function initMap() { |
| | | const publicCesiumInstance = new PublicCesium({ |
| | | dom: 'mapContainer', |
| | | flatMode: false, |
| | | terrain: true, |
| | | layerMode: 4, |
| | | boundary: false, |
| | | }) |
| | | viewer = publicCesiumInstance.getViewer() |
| | | if (viewer) return |
| | | const map = mapRef.value?.getMap() |
| | | viewer = map?.viewer || null |
| | | } |
| | | |
| | | defineExpose({ open }) |
| | |
| | | .leftBox { |
| | | width: 0; |
| | | flex: 1; |
| | | #mapContainer { |
| | | .gd-cesium { |
| | | width: 100%; |
| | | height: 423px; |
| | | } |
| | |
| | | data, |
| | | }) |
| | | } |
| | | |
| | | |
| | | // 分页 - 传入gdWorkOrderFlow |
| | | export const gdWorkOrderFlowListApi = params => { |
| | | return request({ |
| | | url: `/drone-gd/workOrder/gdWorkOrderFlow/list`, |
| | | method: 'get', |
| | | params, |
| | | }) |
| | | } |