开发者

how to add overlay item in my current location in this code

Here is my code !! i want to add overlay item in my current location !! but seems a problem i cant can any one check what i have to add to my code to just put overlay item appear in my current location Please Check it up .

package tryanabtry.opa; 
import java.util.List; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.res.Resources; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Point; 
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,p5,p6,p7,p8,p9,p10,p11,p12,p13; 
    List<Overlay> mapOverlays; 
    Drawable drawable, drawable2 , drawable3, 
    drawable4,drawable6,drawable7,drawable8,drawable9,drawable10,drawable11,drawable12,drawable13,drawable5; 
    HelloItemizedOverlay itemizedOverlay, itemizedOverlay2 , 
        itemizedOverlay3, 
        itemizedOverlay4,itemizedOverlay5,itemizedOverlay6,itemizedOverlay7,itemizedOverlay8,itemizedOverlay9,itemizedOverlay10,itemizedOverlay11,itemizedOver lay12,itemizedOverlay13; 
    /** 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); 

            mapView.setStreetView(true); 
            mapView.setSatellite(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); 
    }

    public class MyLocationListener implements LocationListener 
    {
        @Override 
        public void onLocationChanged(Location loc) 
        {
            GeoPoint point = new GeoPoint(    (int) (loc.getLatitude() * 
                1E6), 
    开发者_StackOverflow中文版            (int) (loc.getLongitude() * 1E6)); 
///////////////////////////////////MY NEW EDIT \\\\\\\\\\\\\
            mapOverlays = mapView.getOverlays();
            drawable11 = this.getResources().getDrawable(R.drawable.vitblue);
            itemizedOverlay11= new HelloItemizedOverlay(drawable11,this);
            OverlayItem over11 = new OverlayItem(point, "offff", "over5");
            itemizedOverlay11.addOverlay(over11);
            mapOverlays.add(itemizedOverlay11);
/////////////////////////////////////////////////////////////////////// /////////The constructor HelloItemizedOverlay(Drawable, tryanabtry.MyLocationListener) is undefined ////// error 
            String Text = "My current location is: " + 
                "Latitud ="+ loc.getLatitude() + 
                "Longitud =" + loc.getLongitude(); 
            Toast.makeText( getApplicationContext(), 
            Text, 
                Toast.LENGTH_SHORT).show(); 
            mc.animateTo(point); 
        }

        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; 
    } 
}
/* End of UseGps Activity*/ 

My HelloOverlay classs

package tryanabtry.opa; 
import java.util.ArrayList; 
import tryanabtry.opa.tryanabtry.MyLocationListener; 
import android.app.AlertDialog; 
import android.app.AlertDialog.Builder; 
import android.content.res.Resources; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Path; 
import android.graphics.Point; 
import android.graphics.drawable.Drawable; 
import android.util.Log; 
import com.google.android.maps.GeoPoint; 
import com.google.android.maps.ItemizedOverlay; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 
import com.google.android.maps.Projection; 
public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem> 
{
    private ArrayList<OverlayItem> mOverlays = new 
    ArrayList<OverlayItem>(); 
    tryanabtry m = new tryanabtry(); 
    public HelloItemizedOverlay(Drawable defaultMarker, tryanabtry n) { 
        super(boundCenterBottom(defaultMarker)); 
        m = n; 
    }
    @Override 
    protected OverlayItem createItem(int i) { 
        return mOverlays.get(i); 
    }
    @Override 
    public int size() { 
        return mOverlays.size(); 
    }
    public void addOverlay(OverlayItem overlay) { 
        mOverlays.add(overlay); 
        populate(); 
    }
    // ////////// 
    public void draw(android.graphics.Canvas canvas, MapView mapView, 
            boolean shadow) { 
        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.ballon); 
                canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 24,     null)
                return true; 
            } 
            private Resources getResources() { 
                // TODO Auto-generated method stub 
                return null; 
            } 
        }
        GeoPoint p = new GeoPoint((int) (29.987574219703674 * 1E6), 
            (int) (31.44225418567575 * 1E6)); 
        GeoPoint p2 = new GeoPoint((int) ( 29.98763859272003 * 1E6), 
            (int) (31.44235074520111 * 1E6)); 
        GeoPoint p3 = new GeoPoint((int) (29.98718498160553* 1E6), 
            (int) (31.442527770996094 * 1E6)); 
        GeoPoint p4= new GeoPoint((int) (29.98739718380868 * 1E6), 
            (int) (31.442527770886084 * 1E6)); 
        // Let's assume you've assigned values to these two GeoPoints now. 
        Projection projection = mapView.getProjection(); 
        Point startingPoint = projection.toPixels(p, null); 
        Point startingPoint1 = projection.toPixels(p, null); 
        Point startingPoint2= projection.toPixels(p2, null); 
        Point endingPoint = projection.toPixels(p2, null); 
        Point endingPoint1 = projection.toPixels(p3, null); 
        Point endingPoint2= projection.toPixels(p4, null); 
        // Create the path containing the line between the two points. 
        Path path = new Path(); 
        path.moveTo(startingPoint.x, startingPoint.y); 
        path.lineTo(endingPoint.x, endingPoint.y); 
        Path path1 = new Path(); 
        path1.moveTo(startingPoint1.x, startingPoint1.y); 
        path1.lineTo(endingPoint1.x, endingPoint1.y); 
        Path path2 = new Path(); 
        path2.moveTo(startingPoint2.x, startingPoint2.y); 
        path2.lineTo(endingPoint2.x, endingPoint2.y); 

        Paint paint = new Paint(); 
        paint.setStyle(Paint.Style.STROKE); 
        paint.setColor(Color.RED); 
        Paint paint1 = new Paint(); 
        paint1.setStyle(Paint.Style.STROKE); 
        paint1.setColor(Color.GREEN); 
        Paint paint2 = new Paint(); 
        paint2.setStyle(Paint.Style.STROKE); 
        paint2.setColor(Color.YELLOW); 
        // Draw the path! 
        super.draw(canvas, mapView, shadow); 
        // el super de 3shnnn to addd koloooo overlay w path 
        canvas.drawPath(path, paint); 
        canvas.drawPath(path1, paint1); 
        canvas.drawPath(path2, paint2); 
    } 
    @Override 
    public boolean onTap(int i) { 
        try { 
            String s = mOverlays.get(0).getSnippet(); 
            String[] infos = s.split(","); 
            Builder builder = new AlertDialog.Builder(m); 
            builder.setTitle("Information about: " + infos[0]); 
            builder.setIcon(m.getResources().getDrawable( 
                m.getResources().getIdentifier(mOverlays.get(0).getTitle(), 
                "drawable", "net.learn2develop.GoogleMaps"))); 
            builder.setMessage("age: " + infos[1] + "\njob: " + infos[2] 
                + "\ninstitute: " + infos[3]); 
            builder.setPositiveButton("ok", null); 
            builder.show(); 
        } 
        catch (Exception e) { 
            Log.d("3'lt", "lihh ya wdi3", e); 
        } 
        return true; 
    } 


Just add this piece of code at your onLocationChanged

@Override
public void onLocationChanged(Location l) {
    // TODO Auto-generated method stub
    overlayList = mapView.getOverlays();
    MyLocationOverlay object = new MyLocationOverlay(yourclass.this, mapView);
    overlayList.add(myLocation); 
    myLocation.enableMyLocation();
}


I'm late to the party, but the reason you are getting the error:

The constructor HelloItemizedOverlay(Drawable, tryanabtry.MyLocationListener) is undefined

is because of your use of this when calling the constructor of HelloItemizedOverlay. In this context, this refers to the instance of MyLocationListener which the code is within, and not an instance of the class tryanabtry.

Replace this line:

itemizedOverlay11= new HelloItemizedOverlay(drawable11,this);

with this:

itemizedOverlay11= new HelloItemizedOverlay(drawable11,tryanabtry.this);

Please also note that by convention Java classes should start with a capital letter, so Tryanabtry instead of tryanabtry.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜