2013-02-12 143 views
0

我必须在Google mapview中绘制一个圆形和一个小的.png图像,任何人都可以提出如何实现它?在地图上绘制带有图像的圆形图

它应该在提供的经度和纬度上显示圆,并且.png图像应该在圆内。

我想下面的代码画一个圈:

GeoPoint point = new GeoPoint((int) lattitude, 

          (int) longitude); 


@Override 
    public void draw(Canvas canvas, MapView mapView, boolean shadow) { 

       paint1 = new Paint(); 
       paint1.setARGB(128,0 , 0, 250); 
       paint1.setStrokeWidth(2); 
       paint1.setStrokeCap(Paint.Cap.ROUND); 
       paint1.setAntiAlias(true); 
       paint1.setDither(false); 
       paint1.setStyle(Paint.Style.FILL); 
       paint1.setColor(Color.argb(128, 250, 135, 143)); 

       this.radius = 5000; 

       Point pt = mapView.getProjection().toPixels(point, null); 
       float projectedRadius = mapView.getProjection().metersToEquatorPixels(radius); 

       canvas.drawCircle(pt.x, pt.y, projectedRadius, paint1); 

    } 

我能够得出使用上面的代码所提供经度和纬度圈,但无法找到一个方法来绘制圆内的PNG图片。 所以想法是在地图视图上提供的经纬度上绘制圆形内部的.png图像。

请帮我解决这个问题。

+0

我几天前做了类似的事情。图像是否应该填满圆圈?或者它会像圆圈或小图标一样出现在圆圈内吗? – 2013-02-12 07:53:32

+0

图像应该像小图标一样在圆内,大部分图像应该是圆的中心。如果您已经实现了它,请分享我的代码。 – piks 2013-02-12 08:26:39

回答

0

就我个人而言,我会首先想象png-in-circle会是什么样子,然后将图像制作出来。像在其中一样,用你想在其中显示的png制作一个圆圈的png图像。然后,只需在所需的纬度/经度上放置一个覆盖层即可。请参阅this resource的第2部分。

+0

png里面的圆圈不过是圆圈内的一个图片而圆圈不应该是任何静态图片的意思,当用户放大缩小时,圆圈应该增加减少。 – piks 2013-02-12 06:27:11

+0

那么,圈子需要按照图像本身的比例改变尺寸?在这种情况下,我会让png成为一个叠加层,然后在画布上围绕它绘制圆圈。我不确定你在上面覆盖哪个方法,但是你应该重写mapView的onDraw(canvas)方法。将叠加层的位置存储在数组中,并且对于每个叠加层,在onDraw中围绕它的位置绘制一个圆圈。只要确保你叫super.onDraw。 – Halogen 2013-02-12 18:14:15

+0

这是地图API的btw v1或v2吗? – Halogen 2013-02-12 18:17:09