2

MapView通过正确传递经度和纬度参数来获取当前位置。但我想在该图像上像徒手(即名称或线条等)一样绘制油漆MapView。从那我想要 MapView用户在该油漆上的图像的总图像。我怎样才能做到这一点?

当用户将他的路径发送给另一个用户时,如下所示......

4

3 回答 3

2

使用叠加层。 请参阅此示例叠加层

这是示例代码:

public class overlayGeoPoints  extends Overlay {

    private GeoPoint geoPoint;
    private int radius = 20;

    @Override
    public boolean onTap(GeoPoint geoPoint, MapView mapView){
          this.geoPoint = geoPoint;
    }

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

        // put your logic here to draw on the overlay
        // ie draw a circle
        Projection projection = mapView.getProjection();
        Point point = new Point();
        projection.toPixels(geoPoint, point);

        int px = point.x;
        int py = point.y;
        Paint paint = new Paint(paintSecondary.ANTI_ALIAS_FLAG);
        hl.setColor(intColor);
        canvas.drawCircle(px, py, radius, paint);
        canvas.save();

    }
}

只需将此叠加层添加到您的地图中。

编辑

这是一步一步(通用):

创建地图对象(地图)之后

// get a handle to the map overlays
List<Overlay> overlays = mapView.getOverlays();

// reset overlays as necessary
//overlays.clear();

// create your custom overly class
overlayGeoPoints olay = new overlayGeoPoints();

// append overlay to map overlays
overlays.add(olay);

// tell the map object to redraw
mapView.postInvalidate();
于 2012-10-11T12:26:29.930 回答
1

如果我正确理解了你的问题,你想捕捉德华运动并在地图上显示。

脚步:

  • 创建一个扩展 Overlay 的新类
  • 覆盖onTouchEvent()以获取用户点击并移动手指的位置 (x,y),将它们转换为地理点并将地理点添加到路径对象。打电话invalidate()有地图redrwan。
  • 覆盖onDraw()以绘制上面的路径构建canvas.drawPath()
  • 最后,将叠加层添加到 mapView.getOverlays() 的末尾,以确保此叠加层是第一个获取触摸事件的。

祝你好运。

于 2012-10-11T13:41:50.503 回答
0
// This file is MapViewDemoActivity.java
   import android.os.Bundle;
   import android.view.View;

   import com.google.android.maps.MapActivity;
   import com.google.android.maps.MapView;

       public class MapViewDemoActivity extends MapActivity {
        private MapView mapView;

       @Override
          protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.mapview);

         mapView = (MapView)findViewById(R.id.mapview);
         mapView.setBuiltInZoomControls(true); //display zoom controls
     }

      @Override
         protected boolean isLocationDisplayed() {
          return false;
     } 

这种喜欢对所有http://n3vrax.wordpress.com/2011/08/13/drawing-overlays-on-android-map-view/都很有用

于 2012-10-17T13:52:46.743 回答