Как сделать так, чтобы Overlay отображался выше canvas.drawLine в Android map API - PullRequest
0 голосов
/ 02 марта 2011


Я использовал метод draw() моего класса SitesOverlay, который расширяет ItemizedOverlay<OverlayItem> для рисования некоторых линий.Теперь я также добавляю несколько изображений на карту в качестве наложения, добавляя это одно изображение к List<OverlayItem> во многих различных точках.
Что происходит сейчас, так это то, где линия (нарисованная с использованием метода draw()) изначок изображения перекрывается, линия наложена поверх наложенного изображения.
Как сделать, чтобы наложенное изображение находилось поверх линии?

Редактировать: я использую populate (), чтобы поместить все мои наложения на карту, как только я добавлю их в список.Есть ли способ, которым я могу вызвать populate после Я использовал мой метод draw ()?Я пытался поместить метод populate в метод draw (), но приложение перестало работать ... как-нибудь иначе?

Ответы [ 2 ]

0 голосов
/ 19 марта 2011

хорошо, это показывает, что если вы используете метод рисования, то все, что вы рисуете с его использованием, будет нарисовано поверх ваших оверлеев.Это связано с тем, что draw() вызывается каждый раз, когда вы перетаскиваете / масштабируете или делаете что-либо с картой, а наложения заполняются только в начале ... поэтому нарисованные линии, использующие draw(), всегда будут выходить за наложения.

0 голосов
/ 02 марта 2011

Здесь я делюсь своим источником

public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        super.draw(canvas, mapView, shadow);
        try {

            for (int i = 0; i < size(); i++) {

                OverlayItem item = getItem(i);
                String driverName = item.getSnippet();

                Data.activlyShownDrivers.add(driverName);

                Point screenPts = new Point();
                mapView.getProjection().toPixels(item.getPoint(), screenPts);

                Bitmap bmp = null;
                Context ctx = ShowAll.getContext();
                long angle = (long) Double.parseDouble(item.getTitle());

                // ---add the marker---

                    bmp = BitmapFactory.decodeResource(ctx.getResources(),
                            R.drawable.img1);


                Paint paint = new Paint();
                paint.setColor(Color.BLACK);
                paint.setStyle(Style.FILL_AND_STROKE);

                canvas.drawBitmap(bmp, screenPts.x, screenPts.y, null);
                canvas.drawText(driverName, screenPts.x, screenPts.y, paint);

            }
            // }
        } catch (Exception e) {
            try {
                Log.e(Data.LOG, e.getMessage());
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }

    }
...