package com.amap.map3d.demo.tools;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import com.amap.api.maps.AMap;
import com.amap.api.maps.AMap.OnMarkerDragListener;
import com.amap.api.maps.AMapUtils;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.map3d.demo.R;

/**
 * 两点间距离计算 示例
 */
public class CalculateDistanceActivity extends Activity implements OnMarkerDragListener {
	private AMap aMap;
	private MapView mapView;
	private LatLng latlngA = new LatLng(39.926516, 116.389366);
	private LatLng latlngB = new LatLng(39.924870, 116.403270);
	private Marker makerA;
	private Marker makerB;
	private TextView Text;
	private float distance;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.arc_activity);
		mapView = (MapView) findViewById(R.id.map);
		mapView.onCreate(savedInstanceState);// 此方法必须重写
		init();
		distance = AMapUtils.calculateLineDistance(makerA.getPosition(), makerB.getPosition());
		Text.setText("长按Marker可拖动\n两点间距离为:"+distance+"m");
	}
	private void init() {
		if (aMap == null) {
			aMap = mapView.getMap();
			setUpMap();
		}
		Text = (TextView) findViewById(R.id.info_text);
	}
	private void setUpMap() {
		aMap.setOnMarkerDragListener(this);
		makerA = aMap.addMarker(new MarkerOptions().position(latlngA)
				.draggable(true)
				.icon(BitmapDescriptorFactory
						.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
		makerB = aMap.addMarker(new MarkerOptions().position(latlngB)
				.draggable(true)
				.icon(BitmapDescriptorFactory
						.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
		aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(39.925516,
				116.395366), 15));
//		
	}

	/**
	 *  在marker拖动过程中回调此方法, 这个marker的位置可以通过getPosition()方法返回。
	 *  这个位置可能与拖动的之前的marker位置不一样。
	 *  marker 被拖动的marker对象。
     */
	@Override
	public void onMarkerDrag(Marker marker) {

		distance = AMapUtils.calculateLineDistance(makerA.getPosition(), makerB.getPosition());
		Text.setText("长按Marker可拖动\n两点间距离为:"+distance+"m");
		
	}

	/**
	 * 在marker拖动完成后回调此方法, 这个marker的位置可以通过getPosition()方法返回。
	 * 这个位置可能与拖动的之前的marker位置不一样。
	 * marker 被拖动的marker对象。
	 */
	@Override
	public void onMarkerDragEnd(Marker arg0) {
		
	}

	/** 当marker开始被拖动时回调此方法, 这个marker的位置可以通过getPosition()方法返回。
	 * 这个位置可能与拖动的之前的marker位置不一样。
	 * marker 被拖动的marker对象。
	 */
	@Override
	public void onMarkerDragStart(Marker arg0) {
		
	}


	/**
	 * 方法必须重写
	 */
	@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();
	}

}