1
public PNGOverlay(Bitmap original, GeoPoint topLeftGeoPoint, GeoPoint bottomRightGeoPoint) {
    this.original = Bitmap.createScaledBitmap(original, original.getWidth(), original.getHeight(), true);


    ...
    topGeoPoint = topLeftGeoPoint;
    bottomGeoPoint = bottomRightGeoPoint;
}

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

        Projection projection = mapView.getProjection();

        Point leftTop = new Point();
        Point rightTop = new Point();
        Point rightBottom = new Point();
        Point leftBottom = new Point();

        projection.toPixels(topGeoPoint, leftTop);
        projection.toPixels(new GeoPoint(topGeoPoint.getLatitudeE6(), bottomGeoPoint.getLongitudeE6()), rightTop);
        projection.toPixels(bottomGeoPoint, rightBottom);
        projection.toPixels(new GeoPoint(bottomGeoPoint.getLatitudeE6(), topGeoPoint.getLongitudeE6()), leftBottom);

        ....

        Paint paint = new Paint();
        paint.setFilterBitmap(true);
        paint.setAntiAlias(true);

        canvas.drawBitmap(original, null, new Rect(leftTop.x, leftTop.y, rightBottom.x, rightBottom.y), paint);

       ....
}

このコードに問題があります。mapViewにpngを描画すると、png画像がコンパスとGPS位置インジケーターの上に表示されますか?何か案が?

4

1 に答える 1

1

あなたの質問から正確にあなたの問題が何であるかを推測するのは難しいですが、PNGが他のオーバーレイの上に描かれていることを意味し、それらの下に置きたい場合は、最初にPNGオーバーレイをマップビューに追加することで解決できます。

MapViewは、オーバーレイを追加した順序で、各オーバーレイから描画メソッドを呼び出します。

mapview.getoverlays().add(overlay1);
mapview.getoverlays().add(overlay2);

これにより、overlay2がoverlay1の上に描画されます。

mapview.getoverlays().add(overlay2);
mapview.getoverlays().add(overlay1);

これにより、overlay1がoverlay2の上に描画されます。

幸運を。

于 2012-09-27T20:22:03.683 に答える