#ff0000 29  2008 . - #000655 J2ME    Google Maps
#def  Google      Google Maps  Google Earth (   ). 

      J2ME     Google Earth.     jpg   256256      kh.google.com.       "http://kh.google.com/kh?v=projection&t=address",  
projection = 3   . 
address -   ,     .     quartered ()        . Google    q, r, s , t. 
        ,  ,    .     "http://kh.google.com/kh?v=3&t=trtqrsstrqtsqqrrqr"         . 
!!!
 j2me   Google   AJAX   klm   .           ,        : 
 GPS ; 
    ,   . 
     : 

////////////////////////////// , ,   double ///////////////////////////////////
public static double convertCoord(String StrGrad, String StrMin, String StrSec)
{
double dkord = Double.parseDouble(StrGrad )+(Double.parseDouble(StrMin)/60)+(Double.parseDouble(StrSec)/3600);
return dkord;
}
///////////////////////   Google satellite /////////////////////////////////////////
public static String GetQuadtreeAddress(double m_long, double lat, int zoom)
{
int digits = zoom;// zoom 17 max; 12= optimal;
String quad = "t";
String lookup = "qrts";
double x = (180.0 + m_long) / 360.0;
double y = -lat * PI / 180.0;
y = 0.5 * log((1.0+Math.sin(y)) / (1.0 - Math.sin(y)));
y *= 1.0/(2.0 * PI);
y += 0.5;
while (digits >0)
{ digits = digits -1;
x -= Math.floor(x);
y -= Math.floor(y);
quad = quad + lookup.charAt((x >= 0.5 ? 1 : 0) + (y >= 0.5 ? 2 : 0));
x *= 2;
y *= 2;
}
return quad;
}
//////////////////////   map  HIBRID ///////////////////////////////////
public static int[] Satellit_Map(String textSat)
{ int[] result = new int[3];
int i;
int kx=0;
int ky=0;
int zm = 18;//

for (i = 1; i < textSat.length(); i++) {
switch (textSat.charAt(i)) {
case 'q': {
kx = 2 * kx;
ky = 2 * ky;
break;
}
case 'r': {
kx = 2 * kx + 1;
ky = 2 * ky;
break;
}
case 't': {
kx = 2 * kx;
ky = 2 * ky + 1;
break;
}
case 's': {
kx = 2 * kx + 1;
ky = 2 * ky + 1;
break;
}
}
zm--;
}

result[0] = kx;
result[1] = ky;
result[2] = zm - 1;
return result;

}

///*************   *******************************************
///////////////////////// map  satelit//////////////////////////////////////////////////////
public static String Map_Satellit(int kx, int ky, int zoom )
{
StringBuffer quad=new StringBuffer();
for (int i=1; i <= (17-zoom); i++) {
int ksx = kx % 2;
int ksy =ky % 2;
if ((ksx == 0) & (ksy ==0)) { quad.append('q');}
if ((ksx==1) & (ksy ==0)) { quad.append('r');}
if ((ksx ==0) & (ksy ==1)) { quad.append('t');}
if ((ksx==1) & (ksy ==1)) {quad.append('s');}
kx =kx >>1; ky = ky >>1;
}
quad.append('t');
quad.reverse();
return quad.toString();

}
///////////////////////// 256X256  satelit //////////////////////////////////////////////////////
public static String Map_Satellit(int kx, int ky)
{
StringBuffer quad=new StringBuffer();
for (int i=1; i <= (8); i++) {
int ksx = kx % 2;
int ksy =ky % 2;
if ((ksx == 0) & (ksy ==0)) { quad.append('q');}
if ((ksx==1) & (ksy ==0)) { quad.append('r');}
if ((ksx ==0) & (ksy ==1)) { quad.append('t');}
if ((ksx==1) & (ksy ==1)) {quad.append('s');}
kx =kx >>1; ky = ky >>1;
}
quad.append('t');
quad.reverse();
return quad.toString();

}


//////////////////*****************o      y, x map*******************
public static String convertXY_dsh(int kx, int ky , int zoom){
double gy,gx;
double x=0.00;
double y=0.00;
int[] dr= new int[3];;
int[] dl= new int[3];;

double xn= (1 << (zoom+1));
y = ky / xn;
x = kx / xn;
y =y-0.5;
y = y/(1/(2 * PI)); // scale factor from radians to normalized
gy =2*atan(pow( E ,y))- (0.5 * PI);
gy =-gy/(PI/180);

gx = x *360-180;
dr=covgr(gx);
dl=covgr(gy);

return String.valueOf(dl[0])+" ."+String.valueOf(dl[1])+" ."+String.valueOf(dl[2])+" ."+
" *** "+ String.valueOf(dr[0])+" ."+String.valueOf(dr[1])+" ."+String.valueOf(dr[2]);}

///////////////////////   , , . ////////////////////////////////////
public static int[] covgr(double gg){
int[] result = new int[3];
double dg= (int)gg;
double dm = (int)((gg-dg)*60);
///System.out.println(String.valueOf(dm));
double ds=(int)((gg-dg-dm/60)*3600);

result[0]= (int)dg;
result[1]= (int)dm;
result[2]= (int)ds;
return result;

}

      GameCanvas      . 

public Map_Canvas()
{ super(false);


setFullScreenMode(true);// 

try {
xy_laer[0] = new XY_laer();
xy_laer[1] = new XY_laer();
xy_laer[2] = new XY_laer();
xy_laer[3] = new XY_laer();


layerManager = new LayerManager();
fon_Image1 = Image.createImage("/space.png"); //

pointer_img = Image.createImage("/pointer.png");//

pointer_Sprt = new Map_Sprite(pointer_img, 25, 25, getWidth(), getHeight());
pointer_Sprt.defineCollisionRectangle(13,13, 1,1);


//   
tiledLayer[0] = new TiledLayer(4, 4, fon_Image1, 64, 64);
tiledLayer[1] = new TiledLayer(4, 4, fon_Image1, 64, 64);
tiledLayer[2] = new TiledLayer(4, 4, fon_Image1, 64, 64);
tiledLayer[3] = new TiledLayer(4, 4, fon_Image1, 64, 64);
tiledLayer[4] = new TiledLayer(4, 4, fon_Image1, 64, 64);
// fon_Image1 = null;
for (int i = 0; i < 16; i++) {
int column = i % 4;
int row = (i - column) / 4;
tiledLayer[0].setCell(column, row, 1);
tiledLayer[1].setCell(column, row, 1);
tiledLayer[2].setCell(column, row, 1);
tiledLayer[3].setCell(column, row, 1);
tiledLayer[4].setCell(column, row, 1);
}
}
catch (Exception e) { }


}
   :      ().       4 .       RecordStore         .          ,  " trtqrsstrqtsqqrrqr"        . 

         Map_Satellit(, y),     . 

     ,       int[] Satellit_Map(String textSat)  3  kx, ky, zm,              Map_Satellit(int kx, int ky, int zoom ). 

     ,        Dowload_Image(String path_image)    . 

  i_proc   , size_image -    ,     i_proc / (size_image / 100); 

//*************************   Internet *********************************
public String Dowload_Image(String path_image){
HttpConnection c = null;
InputStream s=null;
i_proc =0;
size_image =0;
arrayImage = null;
Image_dowload=null;
long mm=0;
try {
c = (HttpConnection)Connector.open(path_image,Connector.READ_WRITE, true);
path_image = null;
s = c.openInputStream();
mm= c.getLength();

size_image =(int)mm;
arrayImage =new byte[size_image];///. 

// s.read(arrayImage, 0, size_image);
for ( i_proc = 0; i_proc < size_image; i_proc++ )
{
arrayImage[i_proc] = ( byte )s.read();//
}
Image_dowload = Image.createImage(arrayImage,0,size_image);
}

catch ( IllegalArgumentException ce ) {
// System.out.println(" URL "+ ce.getMessage() );
arrayImage = null;
// System.gc();
return " URL ";

}
catch ( IOException ioe ) {
// System.out.println("  "+ ioe.getMessage() );
arrayImage = null;
// System.gc();
return " ";

}
catch ( Exception e ) {
// System.out.println("   "+e.getMessage() );
arrayImage = null;

return "  ";

}


finally {
try {c = null;
if ( s != null )
{ s = null;//.close();
c = null;}
if ( c != null )
c.close();
// System.gc();
}
catch ( IOException ioe ) {
}
catch (java.lang.ArithmeticException axz) {}

}
return "";

} 

   .        . 

   .  .     ,   

:   (magdelphi)