package com.gizwits.amap;

import android.Manifest;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.amap.api.maps2d.AMap;
import com.amap.api.maps2d.AMapOptions;
import com.amap.api.maps2d.CameraUpdateFactory;
import com.amap.api.maps2d.CoordinateConverter;
import com.amap.api.maps2d.MapView;
import com.amap.api.maps2d.model.CameraPosition;
import com.amap.api.maps2d.model.LatLng;
import com.amap.api.maps2d.model.MyLocationStyle;
import com.gizwits.amap.utils.ColorUtil;
import com.gizwits.amap.utils.GPSUtil;
import com.gizwits.amap.utils.UIUtils;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMapOptions;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;

import org.json.JSONException;
import org.json.JSONObject;

public class AMapActivity extends Activity implements AMap.OnMyLocationChangeListener, GoogleMap.OnCameraMoveListener, OnMapReadyCallback, GoogleMap.OnCameraIdleListener {

	private static final int PERMISSION_CODE = 100;

	private static final String TAG = "AmapActivity";
	private static final String THEME_COLOR = "themeColor";// themeColor: 主题色
	private static final String NAVI_BG = "navi_bg";// navi_bg: 导航栏背景色
	private static final String TITLE_COLOR = "titleColor"; // titleColor: 标题颜色
	private static final String TITLE = "title"; // title: 标题
	private static final String RIGHT_TITLE = "right_title"; // right_title: 导航右侧按钮标题
	private static final String URL = "url";// url: 服务器地址
	private static final String TOKEN = "token";// token
	private static final String APP_KEY = "appKey";// appKey
	private static final String TYPE = "type"; // type: 表明 appKey 类型, 传入的值为 appId 或 enterpriseId(不传时默认值)
	private static final String VERSION = "version"; // version: 接口版本
	private static final String ACTION = "action";
	private static final String REGION = "region"; //选择新区域时，传入空的对象。编辑区域时，传入要编辑的区域
	private static final String ADDRESS = "address";// 选择新地址时，传入空的对象。编辑地址时，传入要编辑的地址
	private static final String THEME_INFO = "themeInfo";

	private static final int RESULT_CANCEL = 1; //取消选择位置 (在选择位置界面按了“返回”键)
	private static final int RESULT_NO_LOCATION_PERMISSION = 2; //没有使用定位功能的权限
	private static final int RESULT_NO_ALWAYS_ALLOW_LOCATION = 3; //没有始终允许定位
	private static final int RESULT_INCORRECT_PARM = 4; //参数不正确
	private static final int RESULT_LIMITED_LOCATION = 5; //定位功能受限
	private static final int RESULT_LOCATION_RESOLUTION_FAILURE = 6; //位置解析失败

	private boolean isModifyAddress;


	public static final String RESULT = "result";
	private MapView mapView;
	private AMap aMap;
	private RelativeLayout rl_top;
	private BackView tv_left;
	private TextView tv_title;
	private TextView tv_right;
	private String action;

	private String result;
	private double latitude;
	private double longitude;

	private MyLocationStyle myLocationStyle;
	private CenterCircleView centerCircleView;

	private RelativeLayout rl_map;
	private GoogleMap googlemap;
	private com.google.android.gms.maps.MapView mGoogleMapView;
	private float zoom;
	private boolean mIsAmapDisplay;

	private boolean isSuportGooglePlay;


	private Handler handler = new Handler() {
		public void handleMessage(Message message) {
			mapView.setVisibility(View.GONE);
			rl_map.removeView(mapView);
			if (mapView != null) {
				mapView.onDestroy();
			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		initView();
		checkGooglePlayServices();
		mapView.onCreate(savedInstanceState);
		aMap = mapView.getMap();
		initMap();
		initEvent();
		initParams();
		checkPermisssion();
//		if (checkPermisssion()) {
//			aMap.setMyLocationEnabled(true);
//		} else {
//		}
		mIsAmapDisplay = true;
	}

	private void initView() {
		LinearLayout content = new LinearLayout(this);
		LinearLayout.LayoutParams contentParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
		content.setOrientation(LinearLayout.VERTICAL);
		content.setLayoutParams(contentParams);
		rl_top = new RelativeLayout(this);
		rl_top.setBackgroundColor(ColorUtil.parseStrColor("#4e8dec"));
		RelativeLayout.LayoutParams topParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, UIUtils.dip2px(this, 45));
		rl_top.setLayoutParams(topParams);
		tv_left = new BackView(this);
		tv_left.setLayoutParams(new ViewGroup.LayoutParams(UIUtils.dip2px(this, 45), ViewGroup.LayoutParams.MATCH_PARENT));
		rl_top.addView(tv_left);
		tv_left.setColor(ColorUtil.parseStrColor("#ffffff"));

		tv_title = new TextView(this);
		tv_title.setTextColor(ColorUtil.parseStrColor("#ffffff"));
		tv_title.setTextSize(18);
		tv_title.setText("Title");
		tv_title.setGravity(Gravity.CENTER);
		RelativeLayout.LayoutParams titleParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
		titleParams.addRule(RelativeLayout.CENTER_IN_PARENT);
		tv_title.setLayoutParams(titleParams);

		tv_right = new TextView(this);
		tv_right.setTextColor(ColorUtil.parseStrColor("#ffffff"));
		tv_right.setTextSize(18);
		tv_right.setText("确定");
		tv_right.setGravity(Gravity.CENTER);
		RelativeLayout.LayoutParams rightParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
		rightParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
		tv_right.setPadding(UIUtils.dip2px(this, 10), 0, UIUtils.dip2px(this, 10), 0);
		tv_right.setLayoutParams(rightParams);


		rl_top.addView(tv_title);
		rl_top.addView(tv_right);


		rl_map = new RelativeLayout(this);
		RelativeLayout.LayoutParams mapParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
		rl_map.setLayoutParams(mapParams);
		mapView = new MapView(this);
		mapView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
		rl_map.addView(mapView);
		centerCircleView = new CenterCircleView(this);
		RelativeLayout.LayoutParams circleParams = new RelativeLayout.LayoutParams(UIUtils.dip2px(this, 20), UIUtils.dip2px(this, 20));
		circleParams.addRule(RelativeLayout.CENTER_IN_PARENT);
		centerCircleView.setLayoutParams(circleParams);
		rl_map.addView(centerCircleView);
		centerCircleView.setColor(ColorUtil.parseStrColor("#4e8dec"));
		content.addView(rl_top);

		content.addView(rl_map);
		setContentView(content);
	}

	private void initParams() {
		Intent intent = getIntent();
		action = intent.getStringExtra(ACTION);
		String title = intent.getStringExtra(TITLE);
		if (title != null && !"".equals(title)) {
			tv_title.setText(title);
		}
		String rightTitle = intent.getStringExtra(RIGHT_TITLE);
		if (rightTitle != null && !"".equals(rightTitle)) {
			tv_right.setText(rightTitle);
		}
		String strTitleColor = intent.getStringExtra(TITLE_COLOR);
		if (strTitleColor != null && !"".equals(strTitleColor)) {
			int titleColor = ColorUtil.parseStrColor(strTitleColor);
			tv_title.setTextColor(titleColor);
		}
		latitude = intent.getDoubleExtra("latitude", 0);
		longitude = intent.getDoubleExtra("longitude", 0);
		if (latitude != 0 && longitude != 0 && action.equals("pickAddress")) {
			isModifyAddress = true;
			transformFromWGSToGCJ(latitude, longitude);
			if (!GPSUtil.isInArea(latitude, longitude) && mIsAmapDisplay && isSuportGooglePlay) {
//			if (!GPSUtil.isInArea(latitude, longitude) && mIsAmapDisplay) {
				changeToGoogleMapView();
			}
		}else {
			isModifyAddress = false;
		}
		String themeInfoStr = intent.getStringExtra(THEME_INFO);
		Log.e(TAG, "themeInfoStr:" + themeInfoStr);
		if (themeInfoStr != null && !"".equals(themeInfoStr)) {
			try {
				JSONObject jb = new JSONObject(themeInfoStr);
				if (jb.has(THEME_COLOR)) {
					String themeColor = jb.getString(THEME_COLOR);
					centerCircleView.setColor(ColorUtil.parseStrColor(themeColor));
					tv_left.setColor(ColorUtil.parseStrColor(themeColor));
					tv_right.setTextColor(ColorUtil.parseStrColor(themeColor));
				}
				if (jb.has(NAVI_BG)) {
					rl_top.setBackgroundColor(ColorUtil.parseStrColor(jb.getString(NAVI_BG)));
				}
				if (jb.has(TITLE_COLOR)) {
					tv_title.setTextColor(ColorUtil.parseStrColor(jb.getString(TITLE_COLOR)));
				}
				if (jb.has(TITLE)) {
					tv_title.setText(jb.getString(TITLE));
				}
				if (jb.has(RIGHT_TITLE)) {
					tv_right.setText(jb.getString(RIGHT_TITLE));
				}
			} catch (JSONException e) {
				e.printStackTrace();
			}
		}
		//TODO 判断是否在中国境内，选择高德或谷歌地图
//		if (GPSUtil.outOfChina(latitude, longitude)) {
//
//		}else {
//
//		}
	}

	public boolean checkPermisssion() {
		if (Build.VERSION.SDK_INT > 22) {
			if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
					ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
					ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
				//先判断有没有权限 ，没有就在这里进行权限的申请
				ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION,
						Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_CODE);
				return false;
			}
		}
		return true;
	}

	@Override
	public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
		super.onRequestPermissionsResult(requestCode, permissions, grantResults);
		if (requestCode == PERMISSION_CODE) {
			if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
				aMap.setMyLocationEnabled(true);
				initParams();
			} else {
				JSONObject json = new JSONObject();
				try {
					json.put("resultCode", RESULT_NO_LOCATION_PERMISSION);
				} catch (JSONException e) {
					e.printStackTrace();
				}
				this.result = json.toString();
			}
		}
	}

	private void initMap() {
//		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW);//只定位一次。
//		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE) ;//定位一次，且将视角移动到地图中心点。
//		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW) ;//连续定位、且将视角移动到地图中心点，定位蓝点跟随设备移动。（1秒1次定位）
//		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE);//连续定位、且将视角移动到地图中心点，地图依照设备方向旋转，定位点会跟随设备移动。（1秒1次定位）
//		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点，定位点依照设备方向旋转，并且会跟随设备移动。（1秒1次定位）默认执行此种模式。
////以下三种模式从5.1.0版本开始提供
//		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);//连续定位、蓝点不会移动到地图中心点，定位点依照设备方向旋转，并且蓝点会跟随设备移动。
//		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW_NO_CENTER);//连续定位、蓝点不会移动到地图中心点，并且蓝点会跟随设备移动。
//		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE_NO_CENTER);//连续定位、蓝点不会移动到地图中心点，地图依照设备方向旋转，并且蓝点会跟随设备移动。
		myLocationStyle = new MyLocationStyle();
		myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle
		// .LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点，定位点依照设备方向旋转，并且会跟随设备移动。（1秒1次定位）如果不设置myLocationType，默认也会执行此种模式。
		myLocationStyle.showMyLocation(false);//设置是否显示定位小蓝点，用于满足只想使用定位，不想使用定位小蓝点的场景，设置false以后图面上不再有定位蓝点的概念，但是会持续回调位置信息。
		myLocationStyle.interval(20000);//设置连续定位模式下的定位间隔，只在连续定位模式下生效，单次定位模式下不会生效。单位为毫秒。
		aMap.setMyLocationStyle(myLocationStyle);
		aMap.getUiSettings().setMyLocationButtonEnabled(true);
		aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点，false表示隐藏定位蓝点并不进行定位，默认是false。
		isModifyAddress = true;
		aMap.setOnMyLocationChangeListener(this);
		aMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() {
			@Override
			public void onMapLoaded() {
				aMap.moveCamera(CameraUpdateFactory.zoomTo(18));
				if (isModifyAddress) {
					aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(latitude, longitude)));
				}
			}
		});

		aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() {
			@Override
			public void onCameraChange(CameraPosition cameraPosition) {

			}

			@Override
			public void onCameraChangeFinish(CameraPosition cameraPosition) {
				Log.e(TAG, "onCameraChangeFinish:" + cameraPosition.toString());
				latitude = cameraPosition.target.latitude;
				longitude = cameraPosition.target.longitude;
				zoom = cameraPosition.zoom;
				if (!GPSUtil.isInArea(latitude, longitude) && mIsAmapDisplay && isSuportGooglePlay) {
//				if (!GPSUtil.isInArea(latitude, longitude) && mIsAmapDisplay) {
					changeToGoogleMapView();
				}

			}
		});
	}

	@Override
	protected void onResume() {
		super.onResume();
		if (mapView != null)
			mapView.onResume();
		if (mGoogleMapView != null) {
			try {
				mGoogleMapView.onResume();
			} catch (Exception e) {
			}
		}
	}

	@Override
	protected void onPause() {
		super.onPause();
		if (mapView != null)
			mapView.onPause();
		if (mGoogleMapView != null) {
			try {
				mGoogleMapView.onPause();
			} catch (Exception e) {
			}
		}
	}

	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		mapView.onSaveInstanceState(outState);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		if (mapView != null)
			mapView.onDestroy();
		if (mGoogleMapView != null) {
			try {
				mGoogleMapView.onDestroy();
			} catch (Exception e) {
			}
		}
	}

	@Override
	public void onBackPressed() {
		this.result = String.valueOf(RESULT_CANCEL);
		Intent intent = new Intent();
		intent.putExtra(RESULT, result);
		setResult(RESULT_CANCEL, intent);
		finish();
	}

	private void initEvent() {
		tv_left.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				onBackPressed();
			}
		});

		tv_right.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				if (action != null && action.equals("pickAddress")) {
					transformFromGCJToWGS(latitude, longitude);
				}
				confirm();
			}
		});
	}

	@Override
	public void onMyLocationChange(Location location) {
		Log.e(TAG, "onMyLocationChange:" + location.getLatitude() + ", " + location.getLongitude());
		if (isModifyAddress) {
			isModifyAddress = false;
		} else {
//			aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
			if (GPSUtil.isInArea(location.getLatitude(), location.getLongitude())) {
				if (!mIsAmapDisplay) {
					changeToAmapView();
				}
			} else {
				if (mIsAmapDisplay && isSuportGooglePlay) {
//				if (mIsAmapDisplay) {
					changeToGoogleMapView();
				}
			}

			if (mIsAmapDisplay) {
				aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
			} else {
				googlemap.moveCamera(com.google.android.gms.maps.CameraUpdateFactory.newLatLng(new com.google.android.gms.maps.model.LatLng(location.getLatitude(), location.getLongitude())));
			}
		}


	}

	@Override
	public void onPointerCaptureChanged(boolean hasCapture) {

	}

	private void confirm() {
		Log.e(TAG, "result:" + result);
		Intent intent = new Intent();
		intent.putExtra(RESULT, result);
		setResult(RESULT_OK, intent);
		finish();
	}

	/**
	 * GCJ-02 转换为 WGS-84
	 */
	private void transformFromGCJToWGS(double lat, double lon) {
		double[] latlon = GPSUtil.gcj02_To_Gps84(lat, lon);
		JSONObject json = new JSONObject();
		try {
			json.put("latitude", latlon[0]);
			json.put("longitude", latlon[1]);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		AMapActivity.this.result = json.toString();
	}

	private void transformFromWGSToGCJ(double lat, double lon) {
		LatLng latLng = new LatLng(lat, lon);
		CoordinateConverter converter = new CoordinateConverter();
		converter.from(CoordinateConverter.CoordType.GPS);
		converter.coord(latLng);
		LatLng desLatLng = converter.convert();
		latitude = desLatLng.latitude;
		longitude = desLatLng.longitude;
	}

	private void changeToGoogleMapView() {
		if (!checkGooglePlayServices()) {
			return;
		}
		zoom = mapView.getMap().getCameraPosition().zoom;
		latitude = mapView.getMap().getCameraPosition().target.latitude;
		longitude = mapView.getMap().getCameraPosition().target.longitude;
		mIsAmapDisplay = false;
		mGoogleMapView = new com.google.android.gms.maps.MapView(this, new GoogleMapOptions().camera(new com.google.android.gms.maps.model.CameraPosition(new com.google.android.gms.maps.model.LatLng(latitude, longitude), zoom, 0, 0)));
		mGoogleMapView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
		mGoogleMapView.onCreate(null);
		mGoogleMapView.onResume();
		rl_map.removeView(centerCircleView);
		rl_map.addView(mGoogleMapView);
		rl_map.addView(centerCircleView);
		mGoogleMapView.getMapAsync(this);
		handler.sendEmptyMessageDelayed(0, 500);
	}

	private boolean checkGooglePlayServices() {
		int result = MapsInitializer.initialize(this);
		switch (result) {
			case ConnectionResult.SUCCESS:
				isSuportGooglePlay = true;
				return true;
			case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
				isSuportGooglePlay = true;
				Toast.makeText(getApplicationContext(), "SERVICE_VERSION_UPDATE_REQUIRED", Toast.LENGTH_SHORT).show();
				GooglePlayServicesUtil.getErrorDialog(ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED, this, 0).show();
				break;
			case ConnectionResult.SERVICE_INVALID:
				isSuportGooglePlay = false;
//				AlertDialog.Builder m = new AlertDialog.Builder(this)
//						.setMessage("您的设备不支持Google Play服务，请与设备制造商联系，以寻求帮助")
//						.setPositiveButton("确定",
//								new DialogInterface.OnClickListener() {
//
//									@Override
//									public void onClick(DialogInterface dialog,
//									                    int which) {
////										installAPK("Google Play services.apk");
//									}
//								});
//				m.show();
				break;
			case ConnectionResult.SERVICE_MISSING:
				isSuportGooglePlay = false;
//				AlertDialog.Builder m1 = new AlertDialog.Builder(this)
//						.setMessage("使用谷歌地图，需要安装谷歌相关服务")
//						.setPositiveButton("确定",
//								new DialogInterface.OnClickListener() {
//
//									@Override
//									public void onClick(DialogInterface dialog,
//									                    int which) {
////										installAPK("Google Play services.apk");
//									}
//								});
//				m1.show();
				break;

		}
		return false;


	}

	private void changeToAmapView() {
		if (googlemap != null) {
			zoom = googlemap.getCameraPosition().zoom;
			latitude = googlemap.getCameraPosition().target.latitude;
			longitude = googlemap.getCameraPosition().target.longitude;
		}
		mapView = new MapView(this);
		mapView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
		mapView = new MapView(this, new AMapOptions().camera(new CameraPosition(new LatLng(latitude, longitude), zoom, 0, 0)));
		mapView.onCreate(null);
		mapView.onResume();
		rl_map.removeView(centerCircleView);
		rl_map.addView(mapView);
		rl_map.addView(centerCircleView);
		mGoogleMapView.animate().alpha(0f).setDuration(500).setListener(new AnimatorListenerAdapter() {
			@Override
			public void onAnimationEnd(Animator animation) {
				mGoogleMapView.setVisibility(View.GONE);
				rl_map.removeView(mGoogleMapView);
				if (mGoogleMapView != null) {
					mGoogleMapView.onDestroy();
				}
			}
		});
		aMap = mapView.getMap();
		initMap();
		mIsAmapDisplay = true;
	}

	@Override
	public void onCameraMove() {
//		com.google.android.gms.maps.model.CameraPosition cameraPosition = googlemap.getCameraPosition();
//		longitude = cameraPosition.target.longitude;
//		latitude = cameraPosition.target.latitude;
//		Log.e(TAG, "onCameraMove:" + cameraPosition.toString());
//		zoom = cameraPosition.zoom;
//		if (GPSUtil.isInArea(latitude, longitude) && !mIsAmapDisplay) {
//			changeToAmapView();
//		}
	}

	@Override
	public void onMapReady(GoogleMap googleMap) {
		this.googlemap = googleMap;
		if (googlemap != null) {
			googlemap.setOnCameraMoveListener(this);
			googlemap.setOnCameraIdleListener(this);
			googlemap.setMyLocationEnabled(true);
		}
	}

	@Override
	public void onCameraIdle() {
		com.google.android.gms.maps.model.CameraPosition cameraPosition = googlemap.getCameraPosition();
		longitude = cameraPosition.target.longitude;
		latitude = cameraPosition.target.latitude;
		Log.e(TAG, "onCameraIdle:" + cameraPosition.toString());
		zoom = cameraPosition.zoom;
		if (GPSUtil.isInArea(latitude, longitude) && !mIsAmapDisplay) {
			changeToAmapView();
		}
	}
}
