package com.keju.maomao.activity.mapview; import java.util.StringTokenizer; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; import com.baidu.mapapi.map.ItemizedOverlay; import com.baidu.mapapi.map.MapController; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.OverlayItem; import com.baidu.platform.comapi.basestruct.GeoPoint; import com.keju.maomao.CommonApplication; import com.keju.maomao.Constants; import com.keju.maomao.R; import com.keju.maomao.activity.base.BaseActivity; import com.keju.maomao.bean.BarBean; import com.umeng.analytics.MobclickAgent; /** * 某个地点在地图位置 * @author Zhoujun * @version 创建时间:2013-6-19 下午1:35:15 */ public class LocationMapActivity extends BaseActivity implements OnClickListener { private ImageButton ibLeft; private Button btnRight; private TextView tvTitle; private static MapView bMapView;// 视图 private OverItemT overItemT; private static View mPopView = null;// 弹出提示框 private TextView tvName,tvAddress; private BarBean bean; private OverlayItem overlayItem; private String address; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MobclickAgent.onError(this); setContentView(R.layout.location_list_in_map); bean = (BarBean) getIntent().getSerializableExtra(Constants.EXTRA_DATA); address = (String)getIntent().getSerializableExtra("address"); GeoPoint p1 = new GeoPoint((int) (Double.parseDouble(bean .getLatitude()) * 1E6), (int) (Double.parseDouble(bean .getLongitude()) * 1E6)); overlayItem = new OverlayItem(p1, null, bean.getBar_Name()); findView(); fillData(); ((CommonApplication) getApplication()).addActivity(this); } @Override public void onDestroy() { bMapView.destroy(); super.onDestroy(); } @Override protected void onPause() { bMapView.onPause(); super.onPause(); } @Override protected void onResume() { bMapView.onResume(); super.onResume(); } private void findView(){ ibLeft = (ImageButton) findViewById(R.id.ibLeft); ibLeft.setOnClickListener(this); ibLeft.setImageResource(R.drawable.ic_btn_left); btnRight = (Button) findViewById(R.id.btnRight); btnRight.setBackgroundResource(R.drawable.bg_btn_collection); btnRight.setOnClickListener(this); btnRight.setText("路线"); tvTitle = (TextView) findViewById(R.id.tvTitle); tvTitle.setText("地图"); bMapView = (MapView) findViewById(R.id.bmapView); mPopView = getLayoutInflater().inflate(R.layout.popu_org_location, null); tvName = (TextView) mPopView.findViewById(R.id.tvName); tvAddress = (TextView) mPopView.findViewById(R.id.tvAddress); } private void fillData(){ mapView(); bMapView.addView(mPopView, new MapView.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, null, MapView.LayoutParams.TOP_LEFT)); mPopView.setVisibility(View.GONE); Drawable marker = getResources().getDrawable(R.drawable.ic_org_location); overItemT = new OverItemT(marker,bMapView); overItemT.addItem(overlayItem); bMapView.getOverlays().add(overItemT); bMapView.refresh(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.ibLeft: finish(); overridePendingTransition(0, R.anim.roll_down); break; case R.id.btnRight: Toast.makeText(this, "请安装百度地图使用该功能", Toast.LENGTH_SHORT).show(); break; default: break; } } /** * 显示百度地图 * */ public void mapView() { bMapView.setBuiltInZoomControls(true);// 设置启动内置的缩放控件 MapController mMapController = bMapView.getController();// 得到bMapView的控制权, // 给定一个经纬度构造一个GeoPoint ,单位是微度(度*1E6) GeoPoint point = new GeoPoint((int) (31.232839 * 1E6), (int) (121.4748 * 1E6)); mMapController.setCenter(point);// 设置地图中心点 // mMapController.setCenter(point);// 设置地图中心点 mMapController.setZoom(12);// 设置地图zoom级别 // 设置在缩放动画过程中也显示overlay,默认为不绘制 bMapView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { mPopView.setVisibility(View.GONE); return false; } }); } /** * 显示园区位置,添加logo图片 * * @author Administrator * */ class OverItemT extends ItemizedOverlay<OverlayItem> { public OverItemT(Drawable mark, MapView mapView) { super(mark, mapView); } @Override // 处理当点击事件 protected boolean onTap(final int i) { // 更新气泡位置,并使之显示 GeoPoint pt = overlayItem.getPoint(); bMapView.updateViewLayout(mPopView, new MapView.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, pt, MapView.LayoutParams.BOTTOM_CENTER)); mPopView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); mPopView.setVisibility(View.VISIBLE); tvName.setText(bean.getBar_Name()); String address1 = null; // String address = bean.getBar_Address(); StringTokenizer token = new StringTokenizer(address, "$"); String[] add = new String[3]; int i1 = 0; while (token.hasMoreTokens()) { add[i1] = token.nextToken(); i1++; address1 = add[0]; } tvAddress.setText(bean.getBarStreet()); return true; } public boolean onTap(GeoPoint arg0, MapView arg1) { // 消去弹出的气泡 mPopView.setVisibility(View.GONE); return super.onTap(arg0, arg1); } } }