Skip to content

Commit 8632dcd

Browse files
Solved 1-microdegree gap in a few spots on Earth, noticable now extreme precision is possible
1 parent caaf630 commit 8632dcd

File tree

5 files changed

+8567
-8546
lines changed

5 files changed

+8567
-8546
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ of the Mapcode library by Rijn Buve and Matthew Lowden.
4343

4444
# Version History
4545

46+
* 2.2
47+
48+
Solved 1-microdegree gap in a few spots on Earth, noticable now extreme precision is possible
49+
4650
* 2.1.5
4751

4852
Added maxErrorInMeters to API;

mapcode.js

Lines changed: 68 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -12,63 +12,62 @@
1212
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
15-
*/
16-
15+
*/
1716
var entity_iso = [
18-
'VAT', 'MCO', 'GIB', 'TKL', 'CCK', 'BLM', 'NRU', 'TUV', 'MAC', 'SXM',
19-
'MAF', 'NFK', 'PCN', 'BVT', 'BMU', 'IOT', 'SMR', 'GGY', 'AIA', 'MSR',
20-
'JEY', 'CXR', 'WLF', 'VGB', 'LIE', 'ABW', 'MHL', 'ASM', 'COK', 'SPM',
21-
'NIU', 'KNA', 'CYM', 'BES', 'MDV', 'SHN', 'MLT', 'GRD', 'VIR', 'MYT',
22-
'SJM', 'VCT', 'HMD', 'BRB', 'ATG', 'CUW', 'SYC', 'PLW', 'MNP', 'AND',
23-
'GUM', 'IMN', 'LCA', 'FSM', 'SGP', 'TON', 'DMA', 'BHR', 'KIR', 'TCA',
24-
'STP', 'HKG', 'MTQ', 'FRO', 'GLP', 'COM', 'MUS', 'REU', 'LUX', 'WSM',
25-
'SGS', 'PYF', 'CPV', 'TTO', 'BRN', 'ATF', 'PRI', 'CYP', 'LBN', 'JAM',
26-
'GMB', 'QAT', 'FLK', 'VUT', 'MNE', 'BHS', 'TLS', 'SWZ', 'KWT', 'FJI',
27-
'NCL', 'SVN', 'ISR', 'PSE', 'SLV', 'BLZ', 'DJI', 'MKD', 'RWA', 'HTI',
28-
'BDI', 'GNQ', 'ALB', 'SLB', 'ARM', 'LSO', 'BEL', 'MDA', 'GNB', 'TWN',
29-
'BTN', 'CHE', 'NLD', 'DNK', 'EST', 'DOM', 'SVK', 'CRI', 'BIH', 'HRV',
30-
'TGO', 'LVA', 'LTU', 'LKA', 'GEO', 'IRL', 'SLE', 'PAN', 'CZE', 'GUF',
31-
'ARE', 'AUT', 'AZE', 'SRB', 'JOR', 'PRT', 'HUN', 'KOR', 'ISL', 'GTM',
32-
'CUB', 'BGR', 'LBR', 'HND', 'BEN', 'ERI', 'MWI', 'PRK', 'NIC', 'GRC',
33-
'TJK', 'BGD', 'NPL', 'TUN', 'SUR', 'URY', 'KHM', 'SYR', 'SEN', 'KGZ',
34-
'BLR', 'GUY', 'LAO', 'ROU', 'GHA', 'UGA', 'GBR', 'GIN', 'ECU', 'ESH',
35-
'GAB', 'NZL', 'BFA', 'PHL', 'ITA', 'OMN', 'POL', 'CIV', 'NOR', 'MYS',
36-
'VNM', 'FIN', 'COG', 'DEU', 'JPN', 'ZWE', 'PRY', 'IRQ', 'MAR', 'UZB',
37-
'SWE', 'PNG', 'CMR', 'TKM', 'ESP', 'THA', 'YEM', 'FRA', 'ALA', 'KEN',
38-
'BWA', 'MDG', 'UKR', 'SSD', 'CAF', 'SOM', 'AFG', 'MMR', 'ZMB', 'CHL',
39-
'TUR', 'PAK', 'MOZ', 'NAM', 'VEN', 'NGA', 'TZA', 'EGY', 'MRT', 'BOL',
40-
'ETH', 'COL', 'ZAF', 'MLI', 'AGO', 'NER', 'TCD', 'PER', 'MNG', 'IRN',
41-
'LBY', 'SDN', 'IDN', 'DIF', 'TLA', 'MOR', 'AGU', '5CL', 'QUE', 'HID',
42-
'5MX', 'TAB', 'NAY', 'GUA', 'PUE', 'YUC', 'ROO', 'SIN', 'CAM', 'MIC',
43-
'SLP', 'GRO', 'NLE', 'BCN', 'VER', 'CHP', 'BCS', 'ZAC', 'JAL', 'TAM',
44-
'OAX', 'DUR', 'COA', 'SON', 'CHH', 'GRL', 'SAU', 'COD', 'DZA', 'KAZ',
45-
'ARG', '2DD', '2DN', '2CH', '2AN', '2LD', '2DL', '2ML', '2NL', '2MN',
46-
'2TR', '2MZ', '2SK', '2PB', '2HR', '2AR', '2AS', '2BR', '2UT', '2GA',
47-
'2KL', '2TN', '2HP', '2JK', '2CT', '2JH', '2KA', '2RJ', '2OR', '2GJ',
48-
'2WB', '2MP', '2TG', '2AP', '2MH', '2UP', '2PY', 'NSW', 'ACT', 'JBT',
49-
'4NT', '4SA', 'TAS', 'VIC', '4WA', 'QLD', '6DF', '6SE', '6AL', '6RJ',
50-
'6ES', '6RN', '6PB', '6SC', '6PE', '6AP', '6CE', '6AC', '6PR', '6RR',
51-
'6RO', '6SP', '6PI', '6TO', '6RS', '6MA', '6GO', '6MS', '6BA', '6MG',
52-
'6MT', '6PA', '6AM', '1DC', '1RI', '1DE', '1CT', '1NJ', '1NH', '1VT',
53-
'1MA', '1HI', '1MD', '1WV', '1SC', '1ME', '1IN', '1KY', '1TN', '1VA',
54-
'1OH', '1PA', '1MS', '1LA', '1AL', '1AR', '1NC', '1NY', '1IA', '1IL',
55-
'1GA', '1WI', '1FL', '1MO', '1OK', '1ND', '1WA', '1SD', '1NE', '1KS',
56-
'1ID', '1UT', '1MN', '1MI', '1WY', '1OR', '1CO', '1NV', '1AZ', '1NM',
57-
'1MT', '1CA', '1TX', '1AK', '3BC', '3AB', '3ON', '3QC', '3SK', '3MB',
58-
'3NL', '3NB', '3NS', '3PE', '3YT', '3NT', '3NU', 'IND', 'AUS', 'BRA',
59-
'USA', 'MEX', 'MOW', 'SPE', 'KGD', '7IN', '7AD', '7SE', '7KB', '7KC',
60-
'7CE', '7CU', 'IVA', 'LIP', 'ORL', 'TUL', '7BE', 'VLA', 'KRS', 'KLU',
61-
'7TT', 'BRY', 'YAR', 'RYA', 'AST', 'MOS', 'SMO', '7DA', 'VOR', 'NGR',
62-
'PSK', 'KOS', 'STA', 'KDA', '7KL', 'TVE', 'LEN', 'ROS', 'VGG', 'VLG',
63-
'MUR', '7KR', 'NEN', '7KO', 'ARK', '7MO', 'NIZ', 'PNZ', '7KI', '7ME',
64-
'ORE', 'ULY', '7PM', '7BA', '7UD', '7TA', 'SAM', 'SAR', 'YAN', '7KM',
65-
'SVE', 'TYU', 'KGN', '7CH', '7BU', 'ZAB', 'IRK', 'NVS', 'TOM', 'OMS',
66-
'7KK', 'KEM', '7AL', 'ALT', '7TY', 'KYA', 'MAG', 'CHU', 'KAM', 'SAK',
67-
'7PO', 'YEV', 'KHA', 'AMU', '7SA', 'CAN', 'RUS', '8SH', '8TJ', '8BJ',
68-
'8HI', '8NX', '8CQ', '8ZJ', '8JS', '8FJ', '8AH', '8LN', '8SD', '8SX',
69-
'8JX', '8HA', '8GZ', '8GD', '8HB', '8JL', '8HE', '8SN', '8NM', '8HL',
70-
'8HN', '8GX', '8SC', '8YN', '8XZ', '8GS', '8QH', '8XJ', 'CHN', 'UMI',
71-
'CPT', 'ATA', 'AAA', '?'];
17+
'VAT','MCO','GIB','TKL','CCK','BLM','NRU','TUV','MAC','SXM',
18+
'MAF','NFK','PCN','BVT','BMU','IOT','SMR','GGY','AIA','MSR',
19+
'JEY','CXR','WLF','VGB','LIE','ABW','MHL','ASM','COK','SPM',
20+
'NIU','KNA','CYM','BES','MDV','SHN','MLT','GRD','VIR','MYT',
21+
'SJM','VCT','HMD','BRB','ATG','CUW','SYC','PLW','MNP','AND',
22+
'GUM','IMN','LCA','FSM','SGP','TON','DMA','BHR','KIR','TCA',
23+
'STP','HKG','MTQ','FRO','GLP','COM','MUS','REU','LUX','WSM',
24+
'SGS','PYF','CPV','TTO','BRN','ATF','PRI','CYP','LBN','JAM',
25+
'GMB','QAT','FLK','VUT','MNE','BHS','TLS','SWZ','KWT','FJI',
26+
'NCL','SVN','ISR','PSE','SLV','BLZ','DJI','MKD','RWA','HTI',
27+
'BDI','GNQ','ALB','SLB','ARM','LSO','BEL','MDA','GNB','TWN',
28+
'BTN','CHE','NLD','DNK','EST','DOM','SVK','CRI','BIH','HRV',
29+
'TGO','LVA','LTU','LKA','GEO','IRL','SLE','PAN','CZE','GUF',
30+
'ARE','AUT','AZE','SRB','JOR','PRT','HUN','KOR','ISL','GTM',
31+
'CUB','BGR','LBR','HND','BEN','ERI','MWI','PRK','NIC','GRC',
32+
'TJK','BGD','NPL','TUN','SUR','URY','KHM','SYR','SEN','KGZ',
33+
'BLR','GUY','LAO','ROU','GHA','UGA','GBR','GIN','ECU','ESH',
34+
'GAB','NZL','BFA','PHL','ITA','OMN','POL','CIV','NOR','MYS',
35+
'VNM','FIN','COG','DEU','JPN','ZWE','PRY','IRQ','MAR','UZB',
36+
'SWE','PNG','CMR','TKM','ESP','THA','YEM','FRA','ALA','KEN',
37+
'BWA','MDG','UKR','SSD','CAF','SOM','AFG','MMR','ZMB','CHL',
38+
'TUR','PAK','MOZ','NAM','VEN','NGA','TZA','EGY','MRT','BOL',
39+
'ETH','COL','ZAF','MLI','AGO','NER','TCD','PER','MNG','IRN',
40+
'LBY','SDN','IDN','DIF','TLA','MOR','AGU','5CL','QUE','HID',
41+
'5MX','TAB','NAY','GUA','PUE','YUC','ROO','SIN','CAM','MIC',
42+
'SLP','GRO','NLE','BCN','VER','CHP','BCS','ZAC','JAL','TAM',
43+
'OAX','DUR','COA','SON','CHH','GRL','SAU','COD','DZA','KAZ',
44+
'ARG','2DD','2DN','2CH','2AN','2LD','2DL','2ML','2NL','2MN',
45+
'2TR','2MZ','2SK','2PB','2HR','2AR','2AS','2BR','2UT','2GA',
46+
'2KL','2TN','2HP','2JK','2CT','2JH','2KA','2RJ','2OR','2GJ',
47+
'2WB','2MP','2TG','2AP','2MH','2UP','2PY','NSW','ACT','JBT',
48+
'4NT','4SA','TAS','VIC','4WA','QLD','6DF','6SE','6AL','6RJ',
49+
'6ES','6RN','6PB','6SC','6PE','6AP','6CE','6AC','6PR','6RR',
50+
'6RO','6SP','6PI','6TO','6RS','6MA','6GO','6MS','6BA','6MG',
51+
'6MT','6PA','6AM','1DC','1RI','1DE','1CT','1NJ','1NH','1VT',
52+
'1MA','1HI','1MD','1WV','1SC','1ME','1IN','1KY','1TN','1VA',
53+
'1OH','1PA','1MS','1LA','1AL','1AR','1NC','1NY','1IA','1IL',
54+
'1GA','1WI','1FL','1MO','1OK','1ND','1WA','1SD','1NE','1KS',
55+
'1ID','1UT','1MN','1MI','1WY','1OR','1CO','1NV','1AZ','1NM',
56+
'1MT','1CA','1TX','1AK','3BC','3AB','3ON','3QC','3SK','3MB',
57+
'3NL','3NB','3NS','3PE','3YT','3NT','3NU','IND','AUS','BRA',
58+
'USA','MEX','MOW','SPE','KGD','7IN','7AD','7SE','7KB','7KC',
59+
'7CE','7CU','IVA','LIP','ORL','TUL','7BE','VLA','KRS','KLU',
60+
'7TT','BRY','YAR','RYA','AST','MOS','SMO','7DA','VOR','NGR',
61+
'PSK','KOS','STA','KDA','7KL','TVE','LEN','ROS','VGG','VLG',
62+
'MUR','7KR','NEN','7KO','ARK','7MO','NIZ','PNZ','7KI','7ME',
63+
'ORE','ULY','7PM','7BA','7UD','7TA','SAM','SAR','YAN','7KM',
64+
'SVE','TYU','KGN','7CH','7BU','ZAB','IRK','NVS','TOM','OMS',
65+
'7KK','KEM','7AL','ALT','7TY','KYA','MAG','CHU','KAM','SAK',
66+
'7PO','YEV','KHA','AMU','7SA','CAN','RUS','8SH','8TJ','8BJ',
67+
'8HI','8NX','8CQ','8ZJ','8JS','8FJ','8AH','8LN','8SD','8SX',
68+
'8JX','8HA','8GZ','8GD','8HB','8JL','8HE','8SN','8NM','8HL',
69+
'8HN','8GX','8SC','8YN','8XZ','8GS','8QH','8XJ','CHN','UMI',
70+
'CPT','ATA','AAA', '?'];
7271

7372
var aliases = "2UK=2UT,2CG=2CT,1GU=GUM,1UM=UMI,1VI=VIR,1AS=ASM,1MP=MNP,4CX=CXR,4CC=CCK,4NF=NFK,4HM=HMD,COL=5CL,5ME=5MX,MEX=5MX,5AG=AGU,5BC=BCN,5BS=BCS,5CM=CAM,5CS=CHP,5CH=CHH,5CO=COA,5DF=DIF,5DG=DUR,5GT=GUA,5GR=GRO,5HG=HID,5JA=JAL,5MI=MIC,5MO=MOR,5NA=NAY,5NL=NLE,5OA=OAX,5PB=PUE,5QE=QUE,5QR=ROO,5SL=SLP,5SI=SIN,5SO=SON,5TB=TAB,5TL=TLA,5VE=VER,5YU=YUC,5ZA=ZAC,811=8BJ,812=8TJ,813=8HE,814=8SX,815=8NM,821=8LN,822=8JL,823=8HL,831=8SH,832=8JS,833=8ZJ,834=8AH,835=8FJ,836=8JX,837=8SD,841=8HA,842=8HB,843=8HN,844=8GD,845=8GX,846=8HI,850=8CQ,851=8SC,852=8GZ,853=8YN,854=8XZ,861=8SN,862=8GS,863=8QH,864=8NX,865=8XJ,871=TWN,891=HKG,892=MAC,8TW=TWN,8HK=HKG,8MC=MAC,BEL=7BE,KIR=7KI,PRI=7PO,CHE=7CH,KHM=7KM,PER=7PM,TAM=7TT,0US=USA,0AU=AUS,0RU=RUS,0CN=CHN,TAA=SHN,ASC=SHN,DGA=IOT,WAK=MHL,JTN=UMI,MID=1HI,1PR=PRI,5TM=TAM,TAM=TAM,2OD=2OR,";
7473

@@ -117,11 +116,11 @@ var parents2 = "US,IN,CA,AU,MX,BR,RU,CN,";
117116

118117
var ccode_start = 112; // NLD
119118
var mapcode_cversion = "2.0.2";
120-
var mapcode_dataversion = "2.0";
119+
var mapcode_dataversion = "2.2";
121120

122121
// *************************** mapcode_org *********************
123122

124-
var mapcode_javaversion = '2.1.4/Data2.0';
123+
var mapcode_javaversion = '2.2/Data'+mapcode_dataversion;
125124

126125
/// PRIVATE returns string without leading spaces and plus-signs, and trailing spaces
127126
function trim(str) {
@@ -681,6 +680,14 @@ function convertFractionsToCoord32(p) {
681680
return p;
682681
}
683682

683+
function wrap(p) {
684+
if (p.x >= (180 * 3240000 * 1000000))
685+
p.x -= (360 * 3240000 * 1000000);
686+
if (p.x < (-180 * 3240000 * 1000000))
687+
p.x += (360 * 3240000 * 1000000);
688+
return p;
689+
}
690+
684691
function convertFractionsToDegrees(p) {
685692
p.y /= ( 810000 * 1000000);
686693
p.x /= (3240000 * 1000000);
@@ -1870,9 +1877,7 @@ function master_decode(mapcode, territoryNumber) // returns object with y and x
18701877
zone = decodeGrid(mapcode, extensionchars, '', m);
18711878

18721879
// first of all, make sure the zone fits the country
1873-
if (!mzIsEmpty(zone) && territoryNumber != ccode_earth) {
1874-
zone = mzRestrictZoneTo(zone, minmaxSetup(upto));
1875-
}
1880+
zone = mzRestrictZoneTo(zone, minmaxSetup(upto));
18761881

18771882
if (!mzIsEmpty(zone) && isRestricted(m)) {
18781883
var nrZoneOverlaps = 0;
@@ -1932,14 +1937,12 @@ function master_decode(mapcode, territoryNumber) // returns object with y and x
19321937
}
19331938
}
19341939

1935-
if (territoryNumber != ccode_earth) {
1936-
zone = mzRestrictZoneTo(zone, minmaxSetup(upto));
1937-
}
1940+
zone = mzRestrictZoneTo(zone, minmaxSetup(upto));
19381941
if (mzIsEmpty(zone)) {
19391942
return false;
19401943
}
19411944

1942-
return convertFractionsToDegrees(mzMidPointFractions(zone));
1945+
return convertFractionsToDegrees(wrap(mzMidPointFractions(zone)));
19431946
}
19441947

19451948
// ******************** legacy interface *****************

0 commit comments

Comments
 (0)