2009-09-07 54 views

回答

0

這裏是一個小例子:

查看谷歌地圖靜態圖片的形式爲:

public class frmMap extends Form implements CommandListener { 

    Command _back; 
    MIDlet midlet; 
    Form dis; 

    public frmMap(String title, ImageItem img, MIDlet m, Form d){ 
     super(null); 

     this.midlet = m; 
     this.dis = d; 

     _back = new Command("Back", Command.BACK, 1); 
     addCommand(_back); 
     append(img); 
     setCommandListener(this);   
    } 

    public void commandAction(Command c, Displayable d) { 
     if(c == _back){ 
      Display.getDisplay(midlet).setCurrent(dis); 
     } 
    } 

} 

類INET類下載靜態圖片:

public class INETclass implements Runnable { 

    private String _location = null; 
    private HttpConnection inet; 
    private Pispaal _m; 
    public String url = null; 

    public INETclass(String location, Pispaal m){ 
     _location = location; 
     _m = m;   
    } 

    public void run() { 
     try 
     { 
      //Setup the connection 
      inet = (HttpConnection)Connector.open(url); 
      inet.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
      int rc = inet.getResponseCode(); 

      //Responsecode controleren 
      if(rc == HttpConnection.HTTP_OK){ 
       //Open input stream to read the respone 
       DataInputStream is = new DataInputStream(inet.openInputStream());     
       StringBuffer sb = new StringBuffer(); 

       int ch; 
       long len = -1; 
       byte[] buffer = null; 
       if(_location == null){ 
        len = is.available(); 
       } 

       if(len != -1){ 
        if(_location == null){ 
         buffer = IOUtilities.streamToBytes(is); 
        }else{ 
         while((ch = is.read()) != -1){ 
          sb.append((char)ch); 
         } 
        } 
       } 
       is.close(); 

       if(_location == null){ 
        _m.OnINETComplete(buffer); 
       }else{ 
        _m.Alert(sb.toString()); 
       } 
      }else{ 
       _m.Alert("URL " + url + " geeft response code: " + rc); 
       try 
       { 
        inet.close(); 
       }catch(Exception e){ 
        _m.Alert("Error: " + e.getMessage()); 
       } 
      } 

     } 
     catch(Exception e) 
     { 
      _m.Alert("Error: " + e.getMessage()); 
      System.out.println("Error: " + e.getMessage()); 
     } 
     finally 
     { 
      try 
      { 
       if(inet != null){ inet.close(); } 
       Thread.currentThread().join(); //Making sure this thread dies 
      }catch(Exception e){ 
       _m.Alert("Error: " + e.getMessage()); 
       System.out.println("Error: " + e.getMessage()); 
      } 
     } 
    } 
} 

開始下載的按鈕操作和加載形式查看圖像

public void commandAction(Command c, Displayable d) { 
     synchronized(c){ 
      String loc = _location.getText(); 
      if(loc.indexOf(",") > 0){ 
       //if(c == _strCommand){     
        //INETclass inet = new INETclass(loc, this); 
        //Thread tInet = new Thread(inet); 
        //tInet.start(); 
        //Alert("Locatie word doorgestuurd. Even geduld"); 
       //}else 
       if(c == _mapView){ 
        INETclass inet = new INETclass(null, this); 
        inet.url = "http://www.qeueq.com/gmap.php?location=" + this.lat + "," + this.lon + "&size=" + this.width + "x" + this.height + ";deviceside=true"; 
        Thread tInet = new Thread(inet); 
        tInet.start(); 
       } 
      }else{ 
       Alert("GPS locatie is nog niet beschikbaar."); 
      } 
     } 
    } 

public void UpdateLocation(double lat, double lon){ 
     String location = lat + "," + lon; 
     this.lat = lat; 
     this.lon = lon; 
     synchronized(location){ 
      _location.setText(location); 
      INETclass inet = new INETclass(location, this); 
      Thread tInet = new Thread(inet); 
      tInet.start();   
     } 
    } 

優化和編輯代碼,以便它符合您的需求。花了一些時間讓它正確。

0

現在可以使用谷歌地圖代替黑莓地圖,像我們自己的數據一樣,在圖像中。 enter image description here

如果你正在尋找使用谷歌地圖,以顯示自己的位置/標記,你可以使用ApplicationDescriptor從應用程序中調用谷歌地圖。使用CodeModuleManager.getModuleHandle("GoogleMaps");檢查設備上的谷歌地圖,它會返回一個整數,其中非零表示它可用。然後,您可以在KML文件中添加位置,甚至可以使用KML文件標籤自定義位置指針。

example由最大連接只允許一個單一的標誌物。因此,如果要添加多個標記,則需要KML文件。

你可以看看簡單的教程here初學者。

相關問題