params.js 16.3 KB
Newer Older
1 2 3 4 5 6 7 8 9
/**
 * 地图参数
 * key为地图类型: {
 *     loc: 中心位置
 *     box: 保卫盒子,缩放参照系
 *     getData: 地图数据加载
 * } 
 */
define(function(require) {
K
kener 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23
    function decode(json){
        if (!json.UTF8Encoding) {
            return json;
        }
        var features = json.features;

        for (var f = 0; f < features.length; f++) {
            var feature = features[f];
            var coordinates = feature.geometry.coordinates;
            var encodeOffsets = feature.geometry.encodeOffsets;

            for (var c = 0; c < coordinates.length; c++) {
                var coordinate = coordinates[c];
                
K
kener 已提交
24
                if (feature.geometry.type === 'Polygon') {
K
kener 已提交
25 26
                    coordinates[c] = decodePolygon(
                        coordinate,
K
kener 已提交
27
                        encodeOffsets[c]
K
kener 已提交
28
                    );
K
kener 已提交
29
                } else if (feature.geometry.type === 'MultiPolygon') {
K
kener 已提交
30 31 32 33
                    for (var c2 = 0; c2 < coordinate.length; c2++) {
                        var polygon = coordinate[c2];
                        coordinate[c2] = decodePolygon(
                            polygon,
K
kener 已提交
34
                            encodeOffsets[c][c2]
K
kener 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
                        );
                    }
                }
            }
        }
        // Has been decoded
        json.UTF8Encoding = false;
        return json;
    }

    function decodePolygon(coordinate, encodeOffsets) {
        var result = [];
        var prevX = encodeOffsets[0];
        var prevY = encodeOffsets[1];

        for (var i = 0; i < coordinate.length; i+=2) {
K
kener 已提交
51
            var x = coordinate.charCodeAt(i) - 64;
K
kener 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
            var y = coordinate.charCodeAt(i+1) - 64;
            // ZigZag decoding
            x = (x >> 1) ^ (-(x & 1));
            y = (y >> 1) ^ (-(y & 1));
            // Delta deocding
            x += prevX;
            y += prevY;

            prevX = x;
            prevY = y;
            // Dequantize
            result.push([x / 1024, y / 1024]);
        }

        return result;
    }

69 70 71 72 73 74 75 76
    //box is x, y, width, height when projection scale is 4000
    return {
        'china': {
            loc: [102, 36.7],
            box: [
                -1174.6445229087194, -1437.3577680805693,
                3039.3970214233723, 2531.19589698184
            ],
K
kener 已提交
77
            getData: function(callback) { 
L
lang 已提交
78
                require(['./geoJson/china.geo'], function(md){
K
kener 已提交
79 80
                    callback(decode(md));
                });
K
kener 已提交
81
            }
82 83 84 85 86 87 88
        },
        '新疆': {
            loc: [84.9023, 41.748],
            box: [
                -1174.9404317915883, -1136.0130934711678,
                1216.4169237052663, 939.4360818385251
            ],
K
kener 已提交
89
            getData: function(callback) { 
L
lang 已提交
90
                require(['./geoJson/xin_jiang.geo'], function(md){
K
kener 已提交
91 92 93
                    callback(decode(md));
                });
            }
94 95 96 97 98 99 100
        },
        '西藏': {
            loc: [88.7695, 31.6846],
            box: [
                -1061.2905098655508, -273.40253896102865,
                1182.4138890465167, 728.4762434212385
            ],
K
kener 已提交
101
            getData: function(callback) { 
L
lang 已提交
102
                require(['./geoJson/xi_zang.geo'], function(md){
K
kener 已提交
103 104 105
                    callback(decode(md));
                });
            }
106 107 108 109 110 111 112
        },
        '内蒙古': {
            loc: [110.5977, 45.3408], // [117.5977, 44.3408]
            box: [
                81.92106433333947, -1404.5655158641246,
                1337.913665139638, 1168.7030286278964
            ],
K
kener 已提交
113
            getData: function(callback) { 
L
lang 已提交
114
                require(['./geoJson/nei_meng_gu.geo'], function(md){
K
kener 已提交
115 116 117
                    callback(decode(md));
                });
            }
118 119 120 121 122 123 124
        },
        '青海': {
            loc: [96.2402, 35.4199],
            box: [
                -398.0407413665446, -404.86540158240564,
                770.5429460357634, 553.4881569694239
            ],
K
kener 已提交
125
            getData: function(callback) { 
L
lang 已提交
126
                require(['./geoJson/qing_hai.geo'], function(md){
K
kener 已提交
127 128 129
                    callback(decode(md));
                });
            }
130 131 132 133 134 135 136
        },
        '四川': {
            loc: [102.9199, 30.1904],
            box: [
                34.77351011413543, -24.727858097581816,
                654.265749584143, 581.5837904142871
            ],
K
kener 已提交
137
            getData: function(callback) { 
L
lang 已提交
138
                require(['./geoJson/si_chuan.geo'], function(md){
K
kener 已提交
139 140 141
                    callback(decode(md));
                });
            }
142 143 144 145 146 147 148
        },
        '黑龙江': {
            loc: [128.1445, 48.5156],
            box: [
                1185.0861642873883, -1435.9087566254907,
                680.9449423479143, 618.3772597960831
            ],
K
kener 已提交
149
            getData: function(callback) { 
L
lang 已提交
150
                require(['./geoJson/hei_long_jiang.geo'], function(md){
K
kener 已提交
151 152 153
                    callback(decode(md));
                });
            }
154 155 156 157 158 159 160
        },
        '甘肃': {
            loc: [99.7129, 37.866],// [95.7129, 40.166]
            box: [
                -197.5222870378875, -631.2015222269291,
                884.6861134736321, 734.2542202456989
            ],
K
kener 已提交
161
            getData: function(callback) { 
L
lang 已提交
162
                require(['./geoJson/gan_su.geo'], function(md){
K
kener 已提交
163 164 165
                    callback(decode(md));
                });
            }
166 167 168 169 170 171 172
        },
        '云南': {
            loc: [101.8652, 25.1807],
            box: [
                -4.030270169151834, 326.89754492870105,
                561.4971786143803, 565.9079094851168
            ],
K
kener 已提交
173
            getData: function(callback) { 
L
lang 已提交
174
                require(['./geoJson/yun_nan.geo'], function(md){
K
kener 已提交
175 176 177
                    callback(decode(md));
                });
            }
178 179 180 181 182 183 184
        },
        '广西': {
            loc: [108.2813, 23.6426],
            box: [
                444.4355364538484, 524.7911424174906,
                490.6548359068431, 384.1667316158848
            ],
K
kener 已提交
185
            getData: function(callback) { 
L
lang 已提交
186
                require(['./geoJson/guang_xi.geo'], function(md){
K
kener 已提交
187 188 189
                    callback(decode(md));
                });
            }
190 191 192 193 194 195 196
        },
        '湖南': {
            loc: [111.5332, 27.3779],
            box: [
                716.7125751678784, 265.3988842488122,
                346.1702652872375, 377.50144051998274
            ],
K
kener 已提交
197
            getData: function(callback) { 
L
lang 已提交
198
                require(['./geoJson/hu_nan.geo'], function(md){
K
kener 已提交
199 200 201
                    callback(decode(md));
                });
            }
202 203 204 205 206 207 208
        },
        '陕西': {
            loc: [108.5996, 35.6396], // [109.5996, 35.6396]
            box: [
                508.5948583446903, -399.56997062473215,
                321.038690321553, 559.1002147021181
            ],
K
kener 已提交
209
            getData: function(callback) { 
L
lang 已提交
210
                require(['./geoJson/shan_xi_1.geo'], function(md){
K
kener 已提交
211 212 213
                    callback(decode(md));
                });
            }
214 215 216 217 218 219 220
        },
        '广东': {
            loc: [113.4668, 22.8076],
            box: [
                790.2032875493967, 572.9640361040085,
                494.8279567104971, 388.7112686526252
            ],
K
kener 已提交
221
            getData: function(callback) { 
L
lang 已提交
222
                require(['./geoJson/guang_dong.geo'], function(md){
K
kener 已提交
223 224 225
                    callback(decode(md));
                });
            }
226 227 228 229 230 231 232
        },
        '吉林': {
            loc: [126.4746, 43.5938],
            box: [
                1287.5729431804648, -950.943295028444,
                504.33243011403374, 354.162667814153
            ],
K
kener 已提交
233
            getData: function(callback) { 
L
lang 已提交
234
                require(['./geoJson/ji_lin.geo'], function(md){
K
kener 已提交
235 236 237
                    callback(decode(md));
                });
            }
238 239 240 241 242 243 244
        },
        '河北': {
            loc: [115.4004, 39.3688], //[115.4004, 37.9688]
            box: [
                940.0156020671719, -646.4007207319194,
                325.33903805510784, 477.4542727272415
            ],
K
kener 已提交
245
            getData: function(callback) { 
L
lang 已提交
246
                require(['./geoJson/he_bei.geo'], function(md){
K
kener 已提交
247 248 249
                    callback(decode(md));
                });
            }
250 251 252 253 254 255 256
        },
        '湖北': {
            loc: [112.2363, 31.1572],
            box: [
                683.8325394595918, 45.82949601748078,
                468.66717545627034, 295.2142095820616
            ],
K
kener 已提交
257
            getData: function(callback) { 
L
lang 已提交
258
                require(['./geoJson/hu_bei.geo'], function(md){
K
kener 已提交
259 260 261
                    callback(decode(md));
                });
            }
262 263 264 265 266 267 268
        },
        '贵州': {
            loc: [106.6113, 26.9385],
            box: [
                392.5021834497175, 337.4483828727408,
                375.50579966539516, 320.9420464446699
            ],
K
kener 已提交
269
            getData: function(callback) { 
L
lang 已提交
270
                require(['./geoJson/gui_zhou.geo'], function(md){
K
kener 已提交
271 272 273
                    callback(decode(md));
                });
            }
274 275 276 277 278 279 280
        },
        '山东': {
            loc: [118.7402, 36.4307],
            box: [
                1035.7855473594757, -382.19242168799906,
                412.5747391303373, 313.152767793266
            ],
K
kener 已提交
281
            getData: function(callback) { 
L
lang 已提交
282
                require(['./geoJson/shan_dong.geo'], function(md){
K
kener 已提交
283 284 285
                    callback(decode(md));
                });
            }
286 287 288 289 290 291 292
        },
        '江西': {
            loc: [116.0156, 27.29],
            box: [
                1012.6841751377355, 236.50140310944056,
                295.599802392515, 400.86430917822287
            ],
K
kener 已提交
293
            getData: function(callback) { 
L
lang 已提交
294
                require(['./geoJson/jiang_xi.geo'], function(md){
K
kener 已提交
295 296 297
                    callback(decode(md));
                });
            }
298 299 300 301 302 303 304
        },
        '河南': {
            loc: [113.4668, 33.8818],
            box: [
                785.5419798731749, -185.2911232263814,
                362.6977821251186, 340.3902676066224
            ],
K
kener 已提交
305
            getData: function(callback) { 
L
lang 已提交
306
                require(['./geoJson/he_nan.geo'], function(md){
K
kener 已提交
307 308 309
                    callback(decode(md));
                });
            }
310 311 312 313 314 315 316
        },
        '辽宁': {
            loc: [122.3438, 41.0889],
            box: [
                1203.0641741691293, -757.0946871553339,
                352.71788824534656, 357.71276541155214
            ],
K
kener 已提交
317
            getData: function(callback) { 
L
lang 已提交
318
                require(['./geoJson/liao_ning.geo'], function(md){
K
kener 已提交
319 320 321
                    callback(decode(md));
                });
            }
322 323 324 325 326 327 328
        },
        '山西': {
            loc: [112.4121, 37.6611],
            box: [
                776.5185040689469, -493.6204506126494,
                212.68572802329425, 448.08485211774945
            ],
K
kener 已提交
329
            getData: function(callback) { 
L
lang 已提交
330
                require(['./geoJson/shan_xi_2.geo'], function(md){
K
kener 已提交
331 332 333
                    callback(decode(md));
                });
            }
334 335 336 337 338 339 340
        },
        '安徽': {
            loc: [117.2461, 32.0361],
            box: [
                1054.014965660052, -80.43770626104327,
                295.73127466484925, 352.03731065611606
            ],
K
kener 已提交
341
            getData: function(callback) { 
L
lang 已提交
342
                require(['./geoJson/an_hui.geo'], function(md){
K
kener 已提交
343 344 345
                    callback(decode(md));
                });
            }
346 347 348 349 350 351 352
        },
        '福建': {
            loc: [118.3008, 25.9277],
            box: [
                1172.0955040211252, 341.81292779438445,
                288.99462739279807, 339.42845011348845
            ],
K
kener 已提交
353
            getData: function(callback) { 
L
lang 已提交
354
                require(['./geoJson/fu_jian.geo'], function(md){
K
kener 已提交
355 356 357
                    callback(decode(md));
                });
            }
358 359 360 361 362 363 364
        },
        '浙江': {
            loc: [120.498, 29.0918],
            box: [
                1272.1789620983063, 123.46272678646208,
                286.17816622252326, 286.73860446060394
            ],
K
kener 已提交
365
            getData: function(callback) { 
L
lang 已提交
366
                require(['./geoJson/zhe_jiang.geo'], function(md){
K
kener 已提交
367 368 369
                    callback(decode(md));
                });
            }
370 371 372 373 374 375 376
        },
        '江苏': {
            loc: [119.0586, 32.915], // [120.0586, 32.915]
            box: [
                1125.161343490302, -134.97368204682834,
                356.1806346879009, 291.4961628010442
            ],
K
kener 已提交
377
            getData: function(callback) { 
L
lang 已提交
378
                require(['./geoJson/jiang_su.geo'], function(md){
K
kener 已提交
379 380 381
                    callback(decode(md));
                });
            }
382 383 384 385 386 387 388
        },
        '重庆': {
            loc: [107.7539, 30.1904],
            box: [
                497.78832088614774, 127.0051229616378,
                291.91221530072164, 280.8880182020781
            ],
K
kener 已提交
389
            getData: function(callback) { 
L
lang 已提交
390
                require(['./geoJson/chong_qing.geo'], function(md){
K
kener 已提交
391 392 393
                    callback(decode(md));
                });
            }
394 395 396 397 398 399 400
        },
        '宁夏': {
            loc: [105.9961, 37.3096],
            box: [
                441.193675072408, -376.31946967355213,
                183.76989823787306, 293.0024551112753
            ],
K
kener 已提交
401
            getData: function(callback) { 
L
lang 已提交
402
                require(['./geoJson/ning_xia.geo'], function(md){
K
kener 已提交
403 404 405
                    callback(decode(md));
                });
            }
406 407 408 409 410 411 412
        },
        '海南': {
            loc: [109.9512, 19.2041],
            box: [
                723.8031601361929, 946.050886515855,
                183.33374783084207, 147.66048518654895
            ],
K
kener 已提交
413
            getData: function(callback) { 
L
lang 已提交
414
                require(['./geoJson/hai_nan.geo'], function(md){
K
kener 已提交
415 416 417
                    callback(decode(md));
                });
            }
418 419 420 421 422 423 424
        },
        '台湾': {
            loc: [120.7254, 23.5986], //[121.0254, 23.5986]
            box: [
                1459.925544038912, 519.7445429876257,
                103.06085087505835, 237.80851484008463
            ],
K
kener 已提交
425
            getData: function(callback) { 
L
lang 已提交
426
                require(['./geoJson/tai_wan.geo'], function(md){
K
kener 已提交
427 428 429
                    callback(decode(md));
                });
            }
430 431 432 433 434 435 436
        },
        '北京': {
            loc: [116.4551, 40.2539],
            box: [
                1031.6052083127613, -530.1928574952913,
                103.23943439987329, 114.66079087790081
            ],
K
kener 已提交
437
            getData: function(callback) { 
L
lang 已提交
438
                require(['./geoJson/bei_jing.geo'], function(md){
K
kener 已提交
439 440 441
                    callback(decode(md));
                });
            }
442 443 444 445 446 447 448
        },
        '天津': {
            loc: [117.2219, 39.4189], //[117.4219, 39.4189]
            box: [
                1106.9649995752443, -479.16508616378724,
                71.21176554916747, 120.01987096046025
            ],
K
kener 已提交
449
            getData: function(callback) { 
L
lang 已提交
450
                require(['./geoJson/tian_jin.geo'], function(md){
K
kener 已提交
451 452 453
                    callback(decode(md));
                });
            }
454 455 456 457 458 459 460
        },
        '上海': {
            loc: [121.4648, 31.2891],
            box: [
                1420.334836525578, 71.79837578328207,
                70.41721601016525, 81.99461244072737
            ],
K
kener 已提交
461
            getData: function(callback) { 
L
lang 已提交
462
                require(['./geoJson/shang_hai.geo'], function(md){
K
kener 已提交
463 464 465
                    callback(decode(md));
                });
            }
466 467 468 469 470 471 472
        },
        '香港': {
            loc: [114.2578, 22.3242],
            box: [
                1061.983645387268, 769.0837862603122,
                50.65584483626753, 32.17422147262721
            ],
K
kener 已提交
473
            getData: function(callback) { 
L
lang 已提交
474
                require(['./geoJson/xiang_gang.geo'], function(md){
K
kener 已提交
475 476 477
                    callback(decode(md));
                });
            }
478 479 480 481 482 483 484
        },
        '澳门': {
            loc: [113.5547, 22.1604], //[113.5547, 22.1484]
            box: [
                1043.1350056914507, 798.0786255550063,
                5.387452843479423, 7.564113979470676
            ],
K
kener 已提交
485
            getData: function(callback) { 
L
lang 已提交
486
                require(['./geoJson/ao_men.geo'], function(md){
K
kener 已提交
487 488 489
                    callback(decode(md));
                });
            }
490 491 492
        }
    };
});