如何在两个地方之间单独绘制标记?-安卓



我画了两个点(位置)之间的线,但我不知道如何在这些点上画标记。有人能给我一些想法吗。。。。。

public void drawPath(MapView mv, Canvas canvas) 
    {
        int x1 = -1, y1 = -1, x2 = -1, y2 = -1;
        Paint paint = new Paint();
        paint.setColor(Color.GREEN);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(3);
        for (int i = 0; i < mPoints.size(); i++) 
        {
            Point point = new Point();
            mv.getProjection().toPixels(mPoints.get(i), point);
            x2 = point.x;
            y2 = point.y;
            if (i > 0) 
            {          
                canvas.drawLine(x1, y1, x2, y2, paint);
            }
            x1 = x2;
            y1 = y2;            
        }
    }

您可以在线条的起点和终点添加覆盖。

举个例子。。希望这对你有帮助。。

RouteActivity.java

  public class RouteActivity extends MapActivity 
    {
        private List<Overlay> mapOverlays;
        private Projection projection;  
        MapView mapView;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        Drawable drawable = this.getResources().getDrawable(R.drawable.pin); // Marker that you want to display..
        mapOverlays = mapView.getOverlays(); 
        List<Overlay> mapOverlays = mapView.getOverlays();     
                MyOverlay itemizedoverlay = new MyOverlay(drawable,this);
                GeoPoint point = new GeoPoint(19240000,-99120000); // overlay 1
                OverlayItem overlayitem = new OverlayItem(point, null, null); 
                GeoPoint point1 = new GeoPoint(44046665, 72559236); // overlay 2
                OverlayItem overlayitem1 = new OverlayItem(point1, null, null);         
                itemizedoverlay.addOverlay(overlayitem);        
                itemizedoverlay.addOverlay(overlayitem1);
                mapOverlays.add(itemizedoverlay);
 }
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

MyOverlay.java

public class MyOverlay extends ItemizedOverlay 
{   
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    Context mContext;
    public MyOverlay(Drawable defaultMarker) 
        {
          super(boundCenterBottom(defaultMarker));
        }
    public MyOverlay(Drawable defaultMarker, Context context) {
         // super(defaultMarker);
        super(boundCenterBottom(defaultMarker));
          mContext = context;
        }
        public void draw(Canvas canvas, MapView mapv, boolean shadow)
        {
            super.draw(canvas, mapv, shadow);
           // line drawing code goes here.....
            canvas.drawPath(path, mPaint);
        }
        @Override
        protected OverlayItem createItem(int i) {
            // TODO Auto-generated method stub
            return mOverlays.get(i);
        }
        @Override
        public int size() {
            // TODO Auto-generated method stub
            return mOverlays.size();
        }
        public void addOverlay(OverlayItem overlay) {
            mOverlays.add(overlay);
            populate();
        }   
}

谢谢。。。

最新更新