在高德地图上用手指画一块区域,并判断坐标是否再改区域内

由于时间原因,我就不修改了 ,直接把代码和布局贴上来,里面有一些不相干的东西,你们凑合着看吧

我讲一下思路:

直接在地图上触摸是不行的,它会默认拖动地图. 所以在布局上搞一个帧布局,下面市地图,上面是一个透明的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);

viewBt.setVisibility(View.GONE); //先让这个占满屏幕的透明button消失 当点击是才让他出现 
init();


}


private void init() {
if (aMap == null) {
aMap = mapView.getMap(); // 获取Amap类
projection = aMap.getProjection(); <
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值