Skip to content

Commit c54b1ef

Browse files
committed
fix: 对于bd09来说, 香港属于中国
1 parent 7038563 commit c54b1ef

File tree

1 file changed

+34
-19
lines changed

1 file changed

+34
-19
lines changed

index.js

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
return this.west <= lon && this.east >= lon && this.north >= lat && this.south <= lat;
3939
}
4040

41-
//China region - raw data
41+
// China region - raw data
4242
var region = [
4343
new Rectangle(79.446200, 49.220400, 96.330000, 42.889900),
4444
new Rectangle(109.687200, 54.141500, 135.000200, 39.374200),
@@ -47,7 +47,7 @@
4747
new Rectangle(97.025300, 29.529700, 124.367395, 20.414096),
4848
new Rectangle(107.975793, 20.414096, 111.744104, 17.871542)
4949
];
50-
//China excluded region - raw data
50+
// China excluded region - raw data
5151
var exclude = [
5252
new Rectangle(119.921265, 25.398623, 122.497559, 21.785006),
5353
new Rectangle(101.865200, 22.284000, 106.665000, 20.098800),
@@ -56,18 +56,28 @@
5656
new Rectangle(127.456800, 55.817500, 137.022700, 49.557400),
5757
new Rectangle(131.266200, 44.892200, 137.022700, 42.569200),
5858
new Rectangle(73.124600, 35.398637, 77.948114, 29.529700),
59+
]
60+
// China excluded region 2, Hongkong etc.
61+
var EXCLUDE_REGIN_2 = [
5962
new Rectangle(114.505238, 22.138258, 113.845000, 22.428903),
6063
new Rectangle(113.97000, 22.507833, 114.450000, 22.428903),
6164
];
6265

63-
function isInChina(lon, lat) {
66+
function isInChina(lon, lat, excludeRegin2 = true) {
6467
for (var i = 0; i < region.length; i++) {
6568
if (region[i].contain(lon, lat)) {
6669
for (var j = 0; j < exclude.length; j++) {
6770
if (exclude[j].contain(lon, lat)) {
6871
return false;
6972
}
7073
}
74+
if (excludeRegin2) {
75+
for (var j = 0; j < EXCLUDE_REGIN_2.length; j++) {
76+
if (EXCLUDE_REGIN_2[j].contain(lon, lat)) {
77+
return false;
78+
}
79+
}
80+
}
7181
return true;
7282
}
7383
}
@@ -113,9 +123,7 @@
113123
* @returns {*[]}
114124
*/
115125
function wgs84togcj02(lng, lat) {
116-
if (!isInChina(lng, lat)) {
117-
return [lng, lat]
118-
}
126+
119127
return transform(lng, lat)
120128
};
121129

@@ -126,9 +134,6 @@
126134
* @returns {*[]}
127135
*/
128136
function gcj02towgs84(lng, lat) {
129-
if (!isInChina(lng, lat)) {
130-
return [lng, lat]
131-
}
132137
var out = transform(lng, lat)
133138
return [lng * 2 - out[0], lat * 2 - out[1]]
134139
};
@@ -164,25 +169,35 @@
164169
};
165170

166171
return {
167-
// 向前兼容
168-
bd09togcj02: bd09togcj02,
169-
gcj02tobd09: gcj02tobd09,
170-
wgs84togcj02: wgs84togcj02,
171-
gcj02towgs84: gcj02towgs84,
172-
// 小驼峰命名风格
172+
// 原始的转换方法
173+
rawBd09ToGcj02: bd09togcj02,
174+
rawGcj02ToBd09: gcj02tobd09,
175+
rawWgs84ToGcj02: wgs84togcj02,
176+
rawGcj02ToWgs84: gcj02towgs84,
177+
// 判断了中国范围的转换方法
173178
bd09ToGcj02: bd09togcj02,
174179
gcj02ToBd09: gcj02tobd09,
175-
wgs84ToGcj02: wgs84togcj02,
176-
gcj02ToWgs84: gcj02towgs84,
177-
bd09ToWgs84: function (lng, lat) {
180+
wgs84ToGcj02: function (lng, lat) {
178181
if (!isInChina(lng, lat)) {
179182
return [lng, lat]
180183
}
184+
return wgs84togcj02(lng, lat)
185+
},
186+
gcj02ToWgs84: function (lng, lat) {
187+
if (!isInChina(lng, lat)) {
188+
return [lng, lat]
189+
}
190+
return gcj02towgs84(lng, lat)
191+
},
192+
bd09ToWgs84: function (lng, lat) {
193+
if (!isInChina(lng, lat, false)) {
194+
return [lng, lat]
195+
}
181196
var gcj02 = bd09togcj02(lng, lat)
182197
return gcj02towgs84(gcj02[0], gcj02[1])
183198
},
184199
wgs84ToBd09: function (lng, lat) {
185-
if (!isInChina(lng, lat)) {
200+
if (!isInChina(lng, lat, false)) {
186201
return [lng, lat]
187202
}
188203
var gcj02 = wgs84togcj02(lng, lat)

0 commit comments

Comments
 (0)