LocaPoint Encode/Decode sample code

�@

1. C++

Deocde

int LocaPoint2LatLon(double* latidude, double* longitude, char* locapoint)
{
    *latidude = ((double)(
                                ((int)(locapoint[0]) - 65) * 1757600
                                +((int)(locapoint[1]) - 65) * 67600
                                +((int)(locapoint[2]) - 48) * 6760
                                +((int)(locapoint[8]) - 65) * 260
                                +((int)(locapoint[9]) - 65) * 10
                                +((int)(locapoint[10]) - 48) )
                                * 180 / 45697600 -90);
    *longitude = ((double)(
                                ((int)(locapoint[4]) - 65) * 1757600
                                +((int)(locapoint[5]) - 65) * 67600
                                +((int)(locapoint[6]) - 48) * 6760
                                +((int)(locapoint[12]) - 65) * 260
                                +((int)(locapoint[13]) - 65) * 10
                                +((int)(locapoint[14]) - 48) )
                                * 360 / 45697600 -180);
    return(0);
}

Encode

int LatLon2LocaPoint(double* latitude, double* longitude, char* locapoint)
{
    double latitude_step = (*latitude +90)/180*45697600;
    double longitude_step = (*lonitude + 180)/360*45697600;

    locapoint[0] = (char)(latitude_step/1757600%26 + 65);
    locapoint[1] = (char)(latitude_step/67600%26 + 65);
    locapoint[2] = (char)(latitude_step/6760%10 + 48);
    locapoint[3] = '.';
    locapoint[4] = (char)(longitude_step/1757600%26 + 65);
    locapoint[5] = (char)(longitude_step/67600%26 + 65);
    locapoint[6] = (char)(longitude_step/6760%10 + 48);
    locapoint[7] = '.';
    locapoint[8] = (char)(latitude_step/260%26 + 65);
    locapoint[9] = (char)(latitude_step/10%26 + 65);
    locapoint[10] = (char)(latitude_step/1%10 + 48);
    locapoint[11] = '.';
    locapoint[12] = (char)(longitude_step/260%26 + 65);
    locapoint[13] = (char)(longitude_step/10%26 + 65);
    locapoint[14] = (char)(longitude_step/1%10 + 48);
    locapoint[15] = '\0' ;

    return (0) ;
}

2.JavaScript

Decode

function LocaPoint2LatLon(locapoint){
    var location = new Object();

    location.latitude =(
                            (locapoint.charCodeAt(0)-65)*1757600
                          +(locapoint.charCodeAt(1)-65)*67600
                          +(locapoint.charCodeAt(2)-48)*6760
                          +(locapoint.charCodeAt(8)-65)*260
                          +(locapoint.charCodeAt(9)-65)*10
                          +(locapoint.charCodeAt(10)-48)*1
                          )*180/45697600-90;

    location.longitude = (
                            (locapoint.charCodeAt(4)-65)*1757600
                          +(locapoint.charCodeAt(5)-65)*67600
                          +(locapoint.charCodeAt(6)-48)*6760
                          +(locapoint.charCodeAt(12)-65)*260
                          +(locapoint.charCodeAt(13)-65)*10
                          +(locapoint.charCodeAt(14)-48)*1
                          )*360/45697600-180);
    return(location);
}

Encode

function LatLon2LocaPoint(location){
    var latitude_step = (location.latitude + 90)/180*45697600;
    var longitude_step = (location.longitude + 180)/360*45697600;

    var locapoint = String.fromCharCode(
                                                     latitude_step/1757600%26 + 65,
                                                     latitude_step/67600%26 + 65,
                                                     latitude_step/6760%10 + 48,
                                                     46,
                                                     longitude_step/1757600%26 + 65,
                                                     longitude_step/67600%26 + 65,
                                                     longitude_step/6760%10 + 48,
                                                     46,
                                                     latitude_step/260%26 + 65,
                                                     latitude_step/10%26 + 65,
                                                     latitude_step/1%10 + 48,
                                                     46,
                                                     longitude_step/260%26 + 65,
                                                     longitude_step/10%26 + 65,
                                                     longitude_step/1%10 + 48
                                                     );
    return(locapoint);
}