@Override
 public void onBackPressed() {
   // 重写onBackPressed,将字段markerConfigDialog必须置为null,以保证消除之前的引用
   markerConfigDialog.dismiss();
   markerConfigDialog = null;
   super.onBackPressed();
 }
 @Override
 protected void onPrepareDialog(int id, Dialog dialog) {
   switch (id) {
     case MARKERCONFIG_DIALOG:
       if (markerConfigDialog != null && longTouchGeoPoint != null) {
         Window window = markerConfigDialog.getWindow();
         WindowManager.LayoutParams lp = window.getAttributes();
         // 设置对话框初始位置为左上角
         lp.gravity = Gravity.LEFT | Gravity.TOP;
         // lp.x与lp.y表示相对于原始位置的偏移
         // (touchX, touchY)为触屏位置坐标,坐标系以屏幕左上角为(0, 0)
         lp.x = touchX;
         lp.y = touchY;
         // 重新设置对话框位置
         window.setAttributes(lp);
         markerConfigDialog.setLongTouchGeoPoint(longTouchGeoPoint);
       }
       break;
     case README_DIALOG:
       ReadmeDialog readmeDialog = (ReadmeDialog) dialog;
       readmeDialog.setReadmeText(getResources().getString(R.string.overlayeventdemo_readme));
       break;
     default:
       break;
   }
   super.onPrepareDialog(id, dialog);
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
   super.onCreateOptionsMenu(menu);
   // group, item id, order, title
   menu.add(0, 1, 0, R.string.clearall);
   return true;
 }
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Drawable drawableBlue = getResources().getDrawable(R.drawable.blue_pin);
    blueMarkerOverlay = new DefaultItemizedOverlay(drawableBlue);

    Drawable drawableGreen = getResources().getDrawable(R.drawable.green_pin);
    greenMarkerOverlay = new DefaultItemizedOverlay(drawableGreen);

    Drawable drawableRed = getResources().getDrawable(R.drawable.red_pin);
    redMarkerOverlay = new DefaultItemizedOverlay(drawableRed);

    Drawable drawableYellow = getResources().getDrawable(R.drawable.yellow_pin);
    yellowMarkerOverlay = new DefaultItemizedOverlay(drawableYellow);

    // 动态投影为4326的地图,防止投影坐标系设置中心点无效,图层叠加等设置经纬度坐标无效。
    //        CoordinateReferenceSystem crs = new CoordinateReferenceSystem();
    //        crs.wkid = 4326;
    //        baseLayerView.setCRS(crs);

    mapView.getController().setZoom(6);
    //        mapView.getController().setCenter(new Point2D(116.391468, 39.904491));
    mapView.setBuiltInZoomControls(false);
    mapView.addMapViewEventListener(new MapViewEventAdapter());

    TouchOverlay touchOverlay = new TouchOverlay();
    mapView.getOverlays().add(touchOverlay);

    mapView.getOverlays().add(blueMarkerOverlay);
    mapView.getOverlays().add(greenMarkerOverlay);
    mapView.getOverlays().add(redMarkerOverlay);
    mapView.getOverlays().add(yellowMarkerOverlay);

    // 构造一个markerConfigDialog,showDialog时即可直接返回
    markerConfigDialog = new MarkerConfigDialog(this, R.style.dialogTheme);

    service = new PreferencesService(this);
    Map<String, Boolean> params = service.getReadmeEnable("OverlayEventDemo");
    boolean isReadmeEnable = params.get("readme");
    if (isReadmeEnable) {
      showDialog(README_DIALOG);
    }
    helpBtn.setVisibility(View.VISIBLE);
    helpBtn.setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            // TODO Auto-generated method stub
            showDialog(README_DIALOG);
          }
        });
  }
 @Override
 public void onConfigurationChanged(Configuration newConfig) {
   super.onConfigurationChanged(newConfig);
 }