/**
* 应用程序Acitivity基础类
* 实现地图UI及其功能
* Created by Lezg on 2014/5/3.
*/
public class BaseActivity extends Activity {
AppContext mApp;
MapView mMapView;
MyLocationOverlay mLocationOverlay;
private ImageButton zoominBtn;
private ImageButton zoomoutBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mApp = AppContext.getInstance();
}
//初始化地图UI
void initMapView() {
zoominBtn = (ImageButton) findViewById(R.id.zoominBtn);
zoomoutBtn = (ImageButton) findViewById(R.id.zoomoutBtn);
Button requestLacBtn = (Button) findViewById(R.id.locationBtn);
Button deleteBtn = (Button) findViewById(R.id.delete_btn);
mMapView = (MapView) findViewById(R.id.bmapsView);
mMapView.getController().setZoom(16);
mMapView.getController().enableClick(true);
// 定位图层初始化
mLocationOverlay = new MyLocationOverlay(mMapView);
mLocationOverlay.enableCompass();
View.OnClickListener zoomOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.zoominBtn:
mMapView.getController().zoomIn();// 放大
break;
case R.id.zoomoutBtn:
mMapView.getController().zoomOut();// 缩小
break;
default:
break;
}
}
};
zoominBtn.setOnClickListener(zoomOnClickListener);
zoomoutBtn.setOnClickListener(zoomOnClickListener);
requestLacBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AddLocOverlay(true);
}
});
deleteBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mMapView.getOverlays().clear();
AddLocOverlay(false);
}
});
InitMapViewListener();
}
// 用于处理地图事件回调
private void InitMapViewListener() {
MKMapViewListener mapViewListener = new MKMapViewListener() {
int lastLevel = -1;
@Override
public void onMapMoveFinish() {
}
@Override
public void onMapLoadFinish() {
}
// 动画结束更新地图放大缩小按键状态
@Override
public void onMapAnimationFinish() {
int zoomLevel = Math.round(mMapView.getZoomLevel());
if (lastLevel < 0 || lastLevel != zoomLevel) {
refreshZoomButton(zoomLevel);
lastLevel = zoomLevel;
}
}
@Override
public void onGetCurrentMap(Bitmap arg0) {
}
@Override
public void onClickMapPoi(MapPoi arg0) {
}
};
mMapView.regMapViewListener(mApp.mBMapManager, mapViewListener);
int zoomLevel = Math.round(mMapView.getZoomLevel());
refreshZoomButton(zoomLevel);
}
private void refreshZoomButton(int level) {
int maxLevel = mMapView.getMaxZoomLevel();
int minLevel = mMapView.getMinZoomLevel();
if (level < maxLevel && level > minLevel) {
if (!zoominBtn.isEnabled()) {
zoominBtn.setEnabled(true);
}
if (!zoomoutBtn.isEnabled()) {
zoomoutBtn.setEnabled(true);
}
} else if (level == maxLevel) {
zoominBtn.setEnabled(false);
} else if (level == minLevel) {
zoomoutBtn.setEnabled(false);
}
}
//定位
void AddLocOverlay(boolean flag) {
if (mLocationOverlay != null) {
mMapView.getOverlays().remove(mLocationOverlay);
mLocationOverlay.setData(mApp.locData);
mMapView.getOverlays().add(mLocationOverlay);
mMapView.refresh();
mMapView.getController().setZoom(16);
mMapView.getController().animateTo(mApp.locGeoPoint);
}
if (flag) {//flag=true定位 flag=false添加定位图层
int radius = (int) mApp.radius;
String strRadius = String.valueOf(radius);
String str = "我的位置:";
String myLocation = str + "(精确到" + strRadius + "米)" + "\n"
+ mApp.curAddrStr;
showToast(myLocation);
}
}
void showToast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}