2011-05-24 35 views
1

在我的應用我使用的地圖視圖,顯示附近地圖圖釘我目前location.if用戶點擊點我展示有關spot.for顯示香港專業教育學院使用的一些動畫部分細節的詳細信息。Android的MapView的問題

當隱藏動畫用戶點擊我想再次顯示上圖。對於展示我設置的內容視圖,並再次動畫當隱藏動畫用戶點擊我打電話從主要活動功能(從創建)

所以,當我調用該函數的給我在MapView的空指針異常。 請幫忙!!!

這裏是我的代碼

@Override 
    protected void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 

     //  searchButton=(Button)findViewById(R.id.searchId); 
     //  searchButton.setOnClickListener(this); 
     //  nearestButton=(Button)findViewById(R.id.nearestId); 
     //  nearestButton.setOnClickListener(this); 

     url1=ongetUrl(); 
     new FetchTask(FindFishActivity.this, url1).execute(null); 
    } 

    private class FetchTask extends AsyncTask<Object,Object,Object> 
    { 
     ProgressDialog progressDialog; 
     Context ctx; 
     String str_url; 

     public FetchTask(Context mcontext,String str) 
     { 
      this.ctx=mcontext; 
      this.str_url=str; 

     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      progressDialog=ProgressDialog.show(FindFishActivity.this,"Loading Data","Please wait...");  
     } 

     @Override 
     protected Object doInBackground(Object... params) 
     { 

      String res_str=onWebService(str_url); 
      parse(res_str); 

      return true; 
     } 

     @Override 
     protected void onPostExecute(Object result) { 
      super.onPostExecute(result); 
      onMapDisplay(); 
      progressDialog.dismiss(); 
     } 


public void onMapDisplay() { 
     String lakeNameString; 
     setContentView(R.layout.mapview); 

     mapView=(MapView)findViewById(R.id.mapview); 
//  if(mapView==null) 
//  { 
//   MapView view=new MapView(FindFishActivity.this,"0pPZGIF27HwAISdkPQhUWYj12n5N63e-vAbun1g"); 
//   setContentView(R.layout.mapview); 
//  } 

     mapView.setStreetView(true); 
     mapView.setSatellite(false); 
     mapController = mapView.getController(); 
     mapView.setBuiltInZoomControls(true); 
     mapOverlays=mapView.getOverlays(); 
     drawable=FindFishActivity.this.getResources().getDrawable(R.drawable.pushpin4); 
     myOverlays=new MyOverlays(drawable,FindFishActivity.this); 
     for(int i=0;i<latitude.size();i++) 
     { 
      if(!latitude.get(i).equals("")) 
      { 
       lat=Double.parseDouble(latitude.get(i)); 
       latitudearr.add(lat); 
      } 
     } 
     for(int i=0;i<longitude.size();i++) 
     { 
      if(!longitude.get(i).equals(""))  
      { 
       lon=Double.parseDouble(longitude.get(i)); 
       longitudearr.add(lon); 
      } 
     } 
     for(int i=0;i<lakeNameList.size();i++) 
     { 
      if(!lakeNameList.get(i).equals("")) 
      { 
       lakeNameString=lakeNameList.get(i); 
      } 

     } 


     for(int k=0;k<latitudearr.size();k++) 
     { 
      startPoint=new GeoPoint((int)(latitudearr.get(k) * 1E6),(int)(longitudearr.get(k) * 1E6)); 

      mapController.animateTo(startPoint); 
      overlayItem=new OverlayItem(startPoint, ""+lakeNameList.get(k).toString(),""+lDescription.toString()); 
      myOverlays.addOverlay(overlayItem); 
      mapOverlays.add(myOverlays); 
      mapController.setZoom(6); 
      mapView.invalidate(); 
     } 

    } 

和顯示動畫部分

public void onShowInfo() { 

       setContentView(R.layout.tutorial5); 
//     LayoutInflater inflater=(LayoutInflater)FindFishActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
//     View c=inflater.inflate(R.layout.tutorial5,(ViewGroup) findViewById(R.id.linearlayoutID)); 

        transparentPanel=(TransparentPanel)findViewById(R.id.popup_window); 
        transparentPanel.setVisibility(View.VISIBLE); 
        transparentPanel.startAnimation(animShow); 
        final Button hideButton = (Button)findViewById(R.id.hide_popup_button); 
        hideButton.setOnClickListener(new OnClickListener() { 

         public void onClick(View v) { 
          transparentPanel.startAnimation(animHide); 
          transparentPanel.setVisibility(View.GONE); 
          String s=FindFishActivity.this.ongetUrl(); 
          new FetchTask(FindFishActivity.this,s).execute(null); 

         } 

        }); 

回答

0

我不認爲這是練琴,爲您創建單獨的佈局,即。 tutorial5

還有其他方法可以幫您。在你的mapview添加相對佈局,並把tutorial5內容與透明度和所有。

Result:你會得到的MapView與tutorial5佈局之上。一開始就隱藏它。當用戶點擊引腳時只需將可見性設置爲View.VISIBLE,並在單擊停止點後將其恢復爲View.GONE

有了這張地圖仍然是活動的,你也可以在頂部動畫時導航。給出好的效果。

P.S:設置佈局tutorial5背景顏色#80000000 i.e transparent black。我個人喜歡.. :)