Как нанести маркеры в одиночку между двумя местами? - Android

1

Я построил линию между двумя точками (точками), но я не знаю, как построить маркеры по этим пунктам. Может кто-нибудь дать мне некоторые идеи.....

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;            
        }
    }
Теги:
google-maps-api-3
bitmap

1 ответ

0
Лучший ответ

Вы можете добавить наложения в начальную и конечную точку вашей линии.

Вот пример.. Надеюсь, это вам поможет..

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();
        }   

}

Благодаря...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню