2011-05-07 15 views
0

ちょっと私の現在の場所に表示する画像を追加したいのですが、私のコードはオーバーレイアイテムを追加しましたが、私の現在の場所に表示されるオーバーレイアイテム、私は私のcurentの場所にアイテムを追加するbmpを追加してくださいいずれかをチェックアウトすることができます!!!!だから、なぜ私の現在の場所に表示されないのですか?なぜ私の現在の位置にオーバーレイアイテムが表示されないのですか?なぜこのコードでは現在の場所にオーバーレイアイテムを表示できないのですか

enter code here 
package tryanabtry.opa; 
import java.util.List; 

import android.content.Context; 
import android.content.res.Resources; 

import android.graphics.drawable.Drawable; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
    import android.os.Handler; 
    import android.util.Log; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    import com.google.android.maps.GeoPoint; 
    import com.google.android.maps.MapActivity; 
    import com.google.android.maps.MapController; 
    import com.google.android.maps.MapView; 
    import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 


    public class tryanabtry extends MapActivity 

     { 
private MapView mapView; 
private MapController mc; 

    int error=100; 
GeoPoint p, p2, p3, p4; 
List<Overlay> mapOverlays; 
Drawable drawable, drawable2 , drawable3, drawable4; 
HelloItemizedOverlay itemizedOverlay, itemizedOverlay2 , itemizedOverlay3,  itemizedOverlay4; 

      /** Called when the activity is first created. */ 

     @Override 

    public void onCreate(Bundle savedInstanceState) 

    { 
    try{ 
    super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 


    /* Use the LocationManager class to obtain GPS locations */ 

     LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

      LocationListener mlocListener = new MyLocationListener(); 

       mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 
      mapView = (MapView) findViewById(R.id.mapView); 

    // enable Street view by default 
    mapView.setStreetView(true); 


     mapView.setBuiltInZoomControls(true); 

     mc = mapView.getController(); 

     mc.setZoom(12); 
     addOverLays(); 
        } 
      catch(Exception e){ 
    Log.d("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",e.getMessage()); 
      } 

      } 
      public void addOverLays(){ 
     String [] coordinates = {"31.216487288475037","29.932637214660645" ,"30.084123015403748", "51.5002" , "-0.1262","31.337149143218994"}; 
      double lat = 29.98739718380868,lat2 = 29.98763859272003,lat3=29.987574219703674,lat4=29.98718498160553; 
      double log = 31.442527770886084, 
       log2 = 31.44235074520111, 
      log3=31.44225418567575,log4=31.442527770996094; 

    p = new GeoPoint((int) (lat * 1E6), (int) (log * 1E6)); 
    p2 = new GeoPoint((int) (lat2 * 1e6), (int) (log2 * 1e6)); 
    p3=new GeoPoint((int) (lat3 * 1e6), (int) (log3 * 1e6)); 
    p4=new GeoPoint((int) (lat4 * 1e6), (int) (log4 * 1e6)); 


    mapOverlays = mapView.getOverlays(); 
    drawable = this.getResources().getDrawable(R.drawable.vitblue); 
    drawable2 = this.getResources().getDrawable(R.drawable.ballon); 
    drawable3 = this.getResources().getDrawable(R.drawable.blackaaaaa); 
    drawable4 = this.getResources().getDrawable(R.drawable.vitblue); 

    itemizedOverlay = new HelloItemizedOverlay(drawable,this); 
    itemizedOverlay2 = new HelloItemizedOverlay(drawable2,this);   
    itemizedOverlay3 = new HelloItemizedOverlay(drawable3,this);  
    itemizedOverlay4 = new HelloItemizedOverlay(drawable4,this);  
    OverlayItem overlayitem = new OverlayItem(p, "Cairo", " over1"); 
    OverlayItem over2 = new OverlayItem(p2, "ulm", "over2"); 
    OverlayItem over3 = new OverlayItem(p3, "offff", "over3"); 
    OverlayItem over4 = new OverlayItem(p4, "offff", "over4"); 

    itemizedOverlay.addOverlay(overlayitem); 

    mapOverlays.add(itemizedOverlay); 

    itemizedOverlay2.addOverlay(over2); 
    mapOverlays.add(itemizedOverlay2); 

    itemizedOverlay3.addOverlay(over3); 
    mapOverlays.add(itemizedOverlay3); 

    itemizedOverlay4.addOverlay(over4); 
mapOverlays.add(itemizedOverlay4); 
     mc.setZoom(17); 
     mc.animateTo(p4); 

      } 

/*クラス現在地リスナー*/

 public class MyLocationListener implements LocationListener 

      { 

     @Override 

      public void onLocationChanged(Location loc) 

      { 





GeoPoint point = new GeoPoint( (int) (loc.getLatitude() * 1E6), 
     (int) (loc.getLongitude() * 1E6)); 



     String Text = "My current location is: " + 

     "Latitud ="+ loc.getLatitude() + 

      "Longitud =" + loc.getLongitude(); 



      Toast.makeText(getApplicationContext(), 

       Text, 

       Toast.LENGTH_SHORT).show(); 
///////////////////////////////////////////////////////////////////////////////////////////////WHAT I ADDED 
drawable3 = this.getResources().getDrawable(R.drawable.blackaaaaa); 
// itemizedOverlay3 = new HelloItemizedOverlay(drawable3,this); 
    OverlayItem over3 = new OverlayItem(point, "offff", "over3"); 
itemizedOverlay3.addOverlay(over3); 
    mapOverlays.add(itemizedOverlay3); 
////////////////////////////////////////////////////////////////////// 
//// THE LINE NEW HELLOITEMIZEDOVERLAY !! GET AN ERROR !! ANY SOLUTION 

       mc.animateTo(point); 

if (loc.getLatitude() * 1E6>=p.getLatitudeE6()-error&&loc.getLongitude() * 1E6 < p.getLatitudeE6()+error) 
    mapView.getOverlays().remove(itemizedOverlay); 
mapView.invalidate(); 


/////////////////////////////// 
class MapOverlay extends Overlay 
{ 
    private GeoPoint pointToDraw; 

    public void setPointToDraw(GeoPoint point) { 
     pointToDraw = point; 
    } 

public GeoPoint getPointToDraw() { 
     return pointToDraw; 
    } 

    @Override 
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { 
     super.draw(canvas, mapView, shadow);     

     // convert point to pixels 
     Point screenPts = new Point(); 
     mapView.getProjection().toPixels(pointToDraw, screenPts); 

     // add marker 
     Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.red); 
     canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 24, null); // 24 is the height of image   
     return true; 
    } 
} 

        } 


       private Resources getResources() { 
// TODO Auto-generated method stub 
return null; 
        } 


      private void DoubletoString(double latitude) { 
// TODO Auto-generated method stub 

      } 


      public void onProviderDisabled(String provider) 

       { 

     Toast.makeText(getApplicationContext(), 

     "Gps Disabled", 

     Toast.LENGTH_SHORT).show(); 

       } 


     public void onProviderEnabled(String provider) 

       { 

      Toast.makeText(getApplicationContext(), 

       "Gps Enabled", 

      Toast.LENGTH_SHORT).show(); 

        } 


       public void onStatusChanged(String provider, int status, Bundle extras) 

         { 


         } 

         protected boolean isRouteDisplayed() { 
        return false; 
          } 

         }/* End of Class MyLocationListener */ 


        @Override 
        protected boolean isRouteDisplayed() { 
       // TODO Auto-generated method stub 
       return false; 
          } 


           } 

//////////////////////////// ///////////////////////////////////////////////////////////////// /////////

enter code here 

05-08 17:12:06.430: ERROR/AndroidRuntime(1435): Uncaught handler: thread main exiting due to uncaught exception 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): java.lang.NullPointerException 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at tryanabtry.opa.tryanabtry$MyLocationListener.onLocationChanged(tryanabtry.java:182) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:181) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:114) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:130) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at android.os.Looper.loop(Looper.java:123) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at android.app.ActivityThread.main(ActivityThread.java:3948) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
    05-08 17:12:06.430: ERROR/AndroidRuntime(1435):  at dalvik.system.NativeStart.main(Native Method) 
+0

コーディングスタイルを改善するようにしてください。 Eclipseは、少なくとも読みやすいコードスタイルを生成する自動書式設定をサポートしています。あなたがここで提供したものはほんのわかりやすいです...エラーが出たら、あなたからのエラーメッセージをeclipseのLogCatビューに投稿してください。あなたの言語で作業しています。そういう文章を読むのが大変です。 – WarrenFaith

+0

drawable3 = this.getResources ().getDrawable(R.drawable.blackaaaaa); // itemizedOverlay3 =新しいHelloItemizedOverlay(drawable3、this); オーバーレイアイテムover3 =新しいオーバーレイアイテム(ポイント、 "offff"、 "over3"); itemizedOverlay3.addOverlay(over3); mapOverlays.add(itemizedOverlay3); !! が、エラーを取得しhelloitemizedoverlay私は\t公共HelloItemizedOverlay(Drawableのdrawable3、 \t \t \t MyLocationListener myLocationListener)でconstructurを追加するとき、私は {コンストラクタHelloItemizedOverlay(Drawableの、tryanabtry.MyLocationListener)が定義されていない – uouo

+0

ヘルプをしてくださいneeedしてください。 \t \t // TODO自動生成コンストラクタスタブ \t} エラーが赤い線で下線 – uouo

答えて

0

ねえ多分あなたはそのhttps://github.com/jgilfelt/android-mapviewballoonsを試してみて、あなたのイメージを表示するように変更します。あなたが場所に追加のコンテンツを表示したい場合、これは素晴らしいことだと思います。

+0

私は自分のコードを変更しますか? – uouo

関連する問題