@@ -2037,7 +2037,7 @@ static const int STATE_MACHINE[27][6] = {
20372037 STATE_GO |
20382038 512 , ERR_UNEXPECTED_HYPHEN },
20392039
2040- //13 prefix.LLLLL ===
2040+ //13 prefix.LLLLL ===
20412041 {22 |
20422042 128 , ERR_UNEXPECTED_DOT , ERR_INVALID_MAPCODE_FORMAT , ERR_INVALID_VOWEL , STATE_GO |
20432043 128 , 11 |
@@ -2047,7 +2047,7 @@ static const int STATE_MACHINE[27][6] = {
20472047 {ERR_BAD_TERRITORY_FORMAT , ERR_UNEXPECTED_DOT , 15 , 15 , ERR_BAD_TERRITORY_FORMAT , ERR_UNEXPECTED_HYPHEN },
20482048 //15 TC-S === get 2nd state letter
20492049 {ERR_BAD_TERRITORY_FORMAT , ERR_UNEXPECTED_DOT , 16 , 16 , ERR_BAD_TERRITORY_FORMAT , ERR_UNEXPECTED_HYPHEN },
2050- //16 TC-SS === white:waitprefix | det/vow:TC-SSS
2050+ //16 TC-SS === white:waitprefix | det/vow:TC-SSS
20512051 {18 |
20522052 64 , ERR_UNEXPECTED_DOT , 17 , 17 , ERR_DOT_MISSING , ERR_UNEXPECTED_HYPHEN },
20532053 //17 TC-SSS === white:waitprefix
@@ -2159,7 +2159,7 @@ static enum MapcodeError parseMapcodeString(MapcodeElements *mapcodeElements, co
21592159 cx = getRomanVersionOf ((UWORD ) w );
21602160 }
21612161 c = decodeChar (cx );
2162- if (c < 0 ) { // vowel or illegal?
2162+ if (c < 0 ) { // vowel or illegal?
21632163 if (c == -1 ) { // illegal?
21642164 return ERR_INVALID_CHARACTER ;
21652165 }
@@ -3053,6 +3053,21 @@ encodeLatLonToSingleMapcode(char *mapcode, double latDeg, double lonDeg, enum Te
30533053}
30543054
30553055
3056+ // PUBLIC - encode lat,lon for territory to a selected mapcode (from all results) with extraDigits accuracy
3057+ int
3058+ encodeLatLonToSelectedMapcode (char * mapcode , double latDeg , double lonDeg , enum Territory territory , int extraDigits , int indexOfSelected ) {
3059+ Mapcodes mapcodes ;
3060+ int nrOfResults = 0 ;
3061+ nrOfResults = encodeLatLonToMapcodes (& mapcodes , latDeg , lonDeg , territory , extraDigits );
3062+ ASSERT (nrOfResults == mapcodes .count );
3063+ if ((nrOfResults <= 0 ) || (indexOfSelected < 0 ) || (indexOfSelected > nrOfResults )) {
3064+ return 0 ;
3065+ }
3066+ strcpy (mapcode , mapcodes .mapcode [indexOfSelected ]);
3067+ return nrOfResults ;
3068+ }
3069+
3070+
30563071// PUBLIC - encode lat,lon for (optional) territory to mapcodes with extraDigits accuracy
30573072int
30583073encodeLatLonToMapcodes (Mapcodes * mapcodes , double latDeg , double lonDeg , enum Territory territory , int extraDigits ) {
0 commit comments