Android高德地图开发 地图事件

/**
 * AMapV1地图中简单介绍OnMapClickListener, OnMapLongClickListener,
 * OnCameraChangeListener三种监听器用法
 */

public class EventsActivity extends Activity implements OnMapClickListener,
		OnMapLongClickListener, OnCameraChangeListener {
	private AMap aMap;
	private MapView mapView;
	private TextView mTapTextView;
	private TextView mCameraTextView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.events_activity);
		mapView = (MapView) findViewById(R.id.map);
		mapView.onCreate(savedInstanceState);// 此方法必须重写
		init();
	}

	/**
	 * 初始化AMap对象
	 */
	private void init() {
		if (aMap == null) {
			aMap = mapView.getMap();
			setUpMap();
		}
		mTapTextView = (TextView) findViewById(R.id.tap_text);
		mCameraTextView = (TextView) findViewById(R.id.camera_text);
	}

	/**
	 * amap添加一些事件监听器
	 */
	private void setUpMap() {
		aMap.setOnMapClickListener(this);// 对amap添加单击地图事件监听器
		aMap.setOnMapLongClickListener(this);// 对amap添加长按地图事件监听器
		aMap.setOnCameraChangeListener(this);// 对amap添加移动地图事件监听器
	}

	/**
	 * 方法必须重写
	 */
	@Override
	protected void onResume() {
		super.onResume();
		mapView.onResume();
	}

	/**
	 * 方法必须重写
	 */
	@Override
	protected void onPause() {
		super.onPause();
		mapView.onPause();
	}

	/**
	 * 方法必须重写
	 */
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		mapView.onSaveInstanceState(outState);
	}

	/**
	 * 方法必须重写
	 */
	@Override
	protected void onDestroy() {
		super.onDestroy();
		mapView.onDestroy();
	}

	/**
	 * 对单击地图事件回调
	 */
	@Override
	public void onMapClick(LatLng point) {
		mTapTextView.setText("tapped, point=" + point);
	}

	/**
	 * 对长按地图事件回调
	 */
	@Override
	public void onMapLongClick(LatLng point) {
		mTapTextView.setText("long pressed, point=" + point);
	}

	/**
	 * 对正在移动地图事件回调
	 */
	@Override
	public void onCameraChange(CameraPosition cameraPosition) {
		mCameraTextView.setText("onCameraChange:" + cameraPosition.toString());
	}

	/**
	 * 对移动地图结束事件回调
	 */
	@Override
	public void onCameraChangeFinish(CameraPosition cameraPosition) {
		mCameraTextView.setText("onCameraChangeFinish:"
				+ cameraPosition.toString());
		VisibleRegion visibleRegion = aMap.getProjection().getVisibleRegion(); // 获取可视区域、

		LatLngBounds latLngBounds = visibleRegion.latLngBounds;// 获取可视区域的Bounds
		boolean isContain = latLngBounds.contains(Constants.SHANGHAI);// 判断上海经纬度是否包括在当前地图可见区域
		if (isContain) {
			ToastUtil.show(EventsActivity.this, "上海市在地图当前可见区域内");
		} else {
			ToastUtil.show(EventsActivity.this, "上海市超出地图当前可见区域");
		}
	}
}

利用地图的移动事件,可以得到在onCameraChange得到其可视化区域的中心点,minToCenter=comDistance(distances);,将一组地点的经纬度与之比较,得到最靠近的点。

/**
	 * 计算一组数据中的最小
	 * @param distances
	 * @return
	 */
	double comDistance(double[] distances) {
        int size = distances.length;
        for (int a = 1; a < size; a++) {
        	Log.d("hjb 各省距离中心点--", distances[a]+"");
            for (int b = 0; b < size - a; b++) {
                if (distances[b] > distances[b + 1]) {
                	double temp = distances[b];
                	distances[b] = distances[b + 1];
                	distances[b + 1] = temp;
                }
            }
        }
        Log.d("hjb ", "max: " + distances[size-1] + "  min: " + distances[0]);
        return distances[0];
    }

/**
	 * 求出地图上某地与地图可视化区域内中心点的直线距离 ,米
	 * @param city
	 * @return
	 */
	private double distance(LatLng city) {
		// TODO Auto-generated method stub
		// 获取当前地图中心点的坐标
		LatLng mTarget = mAMap.getCameraPosition().target;
	
		Log.d("hjb mTarget--", mTarget.toString());
		Log.d("hjb city--", city.toString());
		Log.d("hjb 距离中心点--", KitLocationUtil.gps2m(mTarget.latitude, mTarget.longitude, city.latitude, city.longitude)+"米");
		return KitLocationUtil.gps2m(mTarget.latitude, mTarget.longitude, city.latitude, city.longitude);
	}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高德地图提供了一个强大的离线地图开发模块,开发者可以利用它来实现离线地图功能的集成和定制。首先,开发者需要在高德地图官网申请相应的API Key,并在应用程序中配置和使用该Key。在集成离线地图功能之前,开发者需要下载离线地图数据并将其存储在设备的本地存储中,以便在没有网络连接的情况下进行地图展示和定位。开发者可以利用高德地图提供的离线地图下载管理器模块进行地图数据的下载和管理。 通过高德地图的离线地图模块,开发者可以实现地图数据的预览、搜索、定位和导航等功能,同时也可以定制地图的样式和功能,以满足不同应用场景的需求。另外,高德地图还提供了一系列离线地图SDK和API接口,方便开发者快速集成和定制离线地图功能。通过高德地图的离线地图开发模块,开发者可以实现更加灵活、稳定和高效的离线地图功能,为用户提供更好的地图体验。 在进行android高德离线地图开发时,开发者需要注意用地图API Key、合理存储地图数据和适配不同设备分辨率等问题,确保离线地图功能的稳定性和流畅性。同时,开发者还可以通过高德地图提供的开发者社区和技术支持渠道,获取更多关于离线地图开发的技术文档和经验分享,帮助解决开发过程中遇到的问题。总之,android高德离线地图开发提供了丰富的功能和灵活的定制选项,能够帮助开发者快速实现离线地图功能,提升应用程序的用户体验和价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值