由于时间原因,我就不修改了 ,直接把代码和布局贴上来,里面有一些不相干的东西,你们凑合着看吧
我讲一下思路:
直接在地图上触摸是不行的,它会默认拖动地图. 所以在布局上搞一个帧布局,下面市地图,上面是一个透明的button,没有画区域时 是GON的,点击画区域按钮后设置为可见,
这样你在这个button上画,就可以通过ontouch方法来得到一系列的屏幕上的点,通过projection 把这些点转换成地图上的坐标,并且划线,划线就是2个点2个点的画,前面的末端点是后面的起始点. 并且把所有这些坐标存在集合里,当手指抬起后,通过这个集合画Polygon图形. 可以有很多个这样的图形 .最后通过Polygon.contains判断随便哪个坐标在不在这些图形里,我这里只判断武汉长江大桥的坐标.
package com.example.amapdemo;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Point;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.animation.BounceInterpolator;
import android.view.animation.Interpolator;
import android.widget.Button;
import android.widget.Toast;
import com.amap.api.maps2d.AMap;
import com.amap.api.maps2d.AMap.CancelableCallback;
import com.amap.api.maps2d.AMap.OnInfoWindowClickListener;
import com.amap.api.maps2d.AMap.OnMapClickListener;
import com.amap.api.maps2d.AMap.OnMapLongClickListener;
import com.amap.api.maps2d.AMap.OnMapTouchListener;
import com.amap.api.maps2d.AMap.OnMarkerClickListener;
import com.amap.api.maps2d.AMap.OnMarkerDragListener;
import com.amap.api.maps2d.CameraUpdate;
import com.amap.api.maps2d.CameraUpdateFactory;
import com.amap.api.maps2d.MapView;
import com.amap.api.maps2d.Projection;
import com.amap.api.maps2d.model.CameraPosition;
import com.amap.api.maps2d.model.LatLng;
import com.amap.api.maps2d.model.Marker;
import com.amap.api.maps2d.model.MarkerOptions;
import com.amap.api.maps2d.model.Polygon;
import com.amap.api.maps2d.model.PolygonOptions;
import com.amap.api.maps2d.model.Polyline;
import com.amap.api.maps2d.model.PolylineOptions;
public class BaseMapActivity extends Activity implements OnClickListener,
CancelableCallback, OnInfoWindowClickListener, OnMapClickListener,
OnMapLongClickListener, OnMapTouchListener, OnMarkerClickListener,
OnMarkerDragListener {
private MapView mapView;
private AMap aMap;
LatLng WUHAN = new LatLng(30.5865284886, 114.2914859093);
LatLng WHCJDQ = new LatLng(30.5496220000, 114.2884140000);
private Marker marker;
private Polyline mPolyline;
private List<Polygon> polygons;
private PolylineOptions polylineOptions;
private List<LatLng> points;
private LatLng point0;
private LatLng point1;
private Button viewBt;
private boolean isDraw=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base_map);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);
findViewById(R.id.bt_towuhan).setOnClickListener(this);
bt_area = (Button) findViewById(R.id.bt_area);
bt_area.setOnClickListener(this);
viewBt = (Button) findViewById(R.id.view);
viewBt.setBackgroundColor(Color.TRANSPARENT);
viewBt.setOnTouchListener(bt_otl);
init();
}
private void init() {
if (aMap == null) {
aMap = mapView.getMap(); // 获取Amap类
projection = aMap.getProjection(); <