如何添加改变大小/位置以及缩放和位置的叠加层

时间:2011-07-11 19:13:54

标签: java android android-mapview

我几天来一直在寻找这个问题的解决方案。 我想添加一个图像作为叠加(或任何最好的解决方案)。图像可视化地图的一部分,但具有自己的图形。因此,它的缩放,位置和行为就像它是地图的一部分一样重要。

图像非常大(800x1200),因此使用som类型的基于图块的解决方案可能是一个优势。

2 个答案:

答案 0 :(得分:2)

我找到了解决方案!! (http://groups.google.com/group/android-developers/browse_thread/thread/79b233ab9ec64e1e#)

我正在使用叠加层,在绘制方法中,我这样做。

public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        if(shadow){
       return;
    }

    super.draw(canvas, mapView, shadow);

    // convert bitmap's bounding box into pixels 
        Point top_left = new Point(); 
        mapView.getProjection().toPixels(topLeft, top_left); 
        Point bottom_right = new Point(); 
        mapView.getProjection().toPixels(bottomRight, bottom_right); 
        // Prepare two rectangles (pixels) 
        Rect src = new Rect( 0,0,bmp.getWidth() - 1, bmp.getHeight() - 1 ); 
        Rect dst = new Rect( top_left.x, top_left.y, bottom_right.x,bottom_right.y ); 

        // draw bitmap 
        canvas.drawBitmap(bmp, src, dst, null); 


}

//我在构造函数中设置了图片的geoPoints(geoPointTopLeft,geoPointBottomRight)

答案 1 :(得分:0)

听起来你想拥有自定义地图图块。叠加层用于添加不缩放或缩放的标记或小视觉细节,只要地图缩放或缩放,它们就会重新绘制。

AFAIK MapView目前仅支持卫星和地图视图切片。似乎没有用于向地图添加自定义“图层”的API,这可能是另一种解决方案。

如果这是一个项目交易破坏者,那么你可以考虑使用像OSMDroid这样的东西,它是一个使用OpenStreetMap-Data的全功能MapView替代品,可能更容易定制。