2014-12-03 64 views
0

我使用Google Map v2。我想从地图中选择一些区域。我想提供用户在屏幕上移动他的手指时的功能,并且我想绘制一个圆以从地图中选择区域。所以请告诉我该怎么做android如何在地图上绘制cricle

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

     fram_map = (FrameLayout) findViewById(R.id.fram_map); 
     fram_map.addView(new DrawView(FreeDrawActivity.this)); 

     map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
       .getMap(); 
     Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG) 
       .title("Hamburg")); 
     Marker kiel = map.addMarker(new MarkerOptions() 
       .position(KIEL) 
       .title("Kiel") 
       .snippet("Kiel is cool") 
       .icon(BitmapDescriptorFactory 
         .fromResource(R.drawable.ic_launcher))); 

     map.getUiSettings().setScrollGesturesEnabled(false); 

     cameraPosition = getIntent().getExtras().getParcelable("position"); 
     // Move the camera instantly to hamburg with a zoom of 15. 
     map.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

     // Zoom in, animating the camera. 
     // map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); 

     val = new ArrayList<LatLng>(); 
     fram_map.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       float x = event.getX(); 
       float y = event.getY(); 

       int x_co = Math.round(x); 
       int y_co = Math.round(y); 

       projection = map.getProjection(); 
       Point x_y_points = new Point(x_co, y_co); 

       LatLng latLng = map.getProjection().fromScreenLocation(
         x_y_points); 
       latitude = latLng.latitude; 

       longitude = latLng.longitude; 

       int eventaction = event.getAction(); 
       switch (eventaction) { 
       case MotionEvent.ACTION_DOWN: 
        // finger touches the screen 
        val.add(new LatLng(latitude, longitude)); 

       case MotionEvent.ACTION_MOVE: 
        // finger moves on the screen 
        val.add(new LatLng(latitude, longitude)); 

       case MotionEvent.ACTION_UP: 
        // finger leaves the screen 
        Draw_Map(); 
        break; 
       } 

       if (Is_MAP_Moveable == true) { 
        return true; 

       } else { 
        return false; 
       } 
      } 
     }); 
    } 

    public void Draw_Map() { 
     PolygonOptions rectOptions = new PolygonOptions(); 
     rectOptions.addAll(val); 
     rectOptions.strokeColor(Color.BLUE); 
     rectOptions.strokeWidth(7); 
     rectOptions.fillColor(Color.CYAN); 
     Polygon polygon = map.addPolygon(rectOptions); 
    } 

这段代码用手指移动绘制一个多边形。但我想提请圈

+0

http://android-er.blogspot.in/2013/02/draw-tranparent-circle-for-google-maps.html – Riser 2014-12-03 10:39:57

+0

http://stackoverflow.com/questions/6029529/draw-circle-of-certain-radius-on-map-view-in-android – Riser 2014-12-03 10:40:26

+0

这将点击一个圆圈。我不想在点击上绘制圆圈。我想在手指上画圈。 – 2014-12-03 10:49:44

回答

0

尝试这样,

public void Draw_Map(LatLng point) { 
     CircleOptions circleOptions = new CircleOptions() 
    .center(point) //set center 
    .radius(500) //set radius in meters 
    .fillColor(Color.TRANSPARENT) //default 
    .strokeColor(Color.BLUE) 
    .strokeWidth(5); 

    Circle myCircle = myMap.addCircle(circleOptions); 
    }