欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

百度地图

程序员文章站 2022-06-10 11:05:20
...

 

package com.easecom.zhwg.ctrl.scene.rail;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.ItemizedOverlay;
import com.baidu.mapapi.MKMapViewListener;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.Overlay;
import com.baidu.mapapi.OverlayItem;
import com.baidu.mapapi.Projection;
import com.easecom.widget.OnWheelChangedListener;
import com.easecom.widget.OnWheelScrollListener;
import com.easecom.widget.WheelView;
import com.easecom.widget.adapters.ArrayWheelAdapter;
import com.easecom.widget.adapters.NumericWheelAdapter;
import com.easecom.zhwg.R;
import com.easecom.zhwg.app.WGApp;
import com.easecom.zhwg.ctrl.scene.rail.GaoTieClass.RainLineDao;
import com.easecom.zhwg.ctrl.scene.rail.GaoTieClass.RainLineService;
import com.easecom.zhwg.ctrl.scene.station.ListViewDialogAdapter;
import com.easecom.zhwg.util.URLUtil;
import com.easecom.zhwg.util.WebUtils;


public class RainStation extends MapActivity {

	// 标题版设置按钮
	private TextView top_text;
	private Button btn_back;
	private Button btn_info;
	public static View mPopView; // 点击mark时弹出的气泡View
	public MapView mMapView;// 地图

	private PopupWindow popupWindow;// 指标框
	private View view;

	public MapController mapController;
	GeoPoint geoPoint;
	List<Overlay> list;
	private List<Map<String, String>> n_list;

	Typeface typeface = null;
	List<RainLineDao> rainLineDaos = null;
	ProgressDialog progressDialog;
	LayoutInflater inflater = null;
	private WGApp app;
	private static int nowMapLeave = 1;
	private Handler handler = new Handler();
	// 存放获取的数据    
	public static List<RainLineDao> mRainLineDao;
	// 存放获取的2G数据
	public static List<RainLineDao> mRainLineDao2G;
	// 存放获取的3G数据
	public static List<RainLineDao> mRainLineDao3G;
	//筛选基站  判断选择哪个
	private int checkIndex=0;

	// 日期控件使用
	private int startYear;
	private int startMonth;
	private int startDay;
	private int endYear;
	private int endMonth;
	private int endDay;
	private String start_time = "";
	private String end_time = "";
	private int width;
	private TextView start_timenew;


	/*
	 * Runnable runnableUi = new Runnable() {
	 * 
	 * @Override public void run() { // 更新界面 progressDialog =
	 * ProgressDialog.show(RainStation.this, null,"正在更新数据,请稍后...", true, true);
	 * try { String path =
	 * URLUtil.RAINLINESERVICE+"?netWorkType=&siteABC=&gwNodeName="; new
	 * QueryRain().execute(path); } catch (Exception e) { }
	 * handler.postDelayed(runnableUi, 1000*60*5); }
	 * 
	 * };
	 */
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.rain_main);
		progressDialog = ProgressDialog.show(RainStation.this, null,
				"正在更新数据,请稍后...", true, true);
		String path = URLUtil.RAINLINESERVICE
				+ "?netWorkType=&siteABC=&gwNodeName=";
		new QueryRain().execute(path);

		QueryRain2G taskTwoG = new QueryRain2G();
		String pathTwoG = URLUtil.RAINLINETWOGSERVICE
				+ "?startTime=&endTime=&gwCellName=&gwNodeName=";
		taskTwoG.execute(pathTwoG);

		QueryRain3G taskThreeG = new QueryRain3G();
		String pathThreeG = URLUtil.RAINLINETHREEGSERVICE
				+ "?startTime=&endTime=&gwCellName=&gwNodeName=";
		taskThreeG.execute(pathThreeG);

		inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		typeface = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);
		ViewUI();
		app = (WGApp) this.getApplication();
		if (app.mBMapMan == null) {
			app.mBMapMan = new BMapManager(getApplication());
			app.mBMapMan.init(app.mStrKey, new WGApp.MyGeneralListener());
		}
		app.mBMapMan.start();
		// 如果使用地图SDK,请初始化地图Activity
		super.initMapActivity(app.mBMapMan);
		mMapView = (MapView) findViewById(R.id.bmapView);
		mMapView.regMapViewListener(app.mBMapMan, new MyMapViewListener());
		setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
		init();
		initPopview();
		initLocation();
		// initOverlayItem(new ArrayList<RainLineDao>());
		// handler.post(runnableUi);
	}

	private void ViewUI() {
		top_text = (TextView) findViewById(R.id.top_text);
		top_text.setText("");
		// 返回按钮
		btn_back = (Button) findViewById(R.id.btn_back);
		btn_back.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				RainStation.this.finish();
			}
		});
		btn_info = (Button) findViewById(R.id.btn_info);
		btn_info.setVisibility(View.GONE);
		btn_info.setOnClickListener(new View.OnClickListener() {
			@Override  
			public void onClick(View v) {
				showAtLocation(findViewById(R.id.rain), Gravity.CENTER, 0, 0);
			}
		});

		// 初始化popupwindow
		view = LayoutInflater.from(this).inflate(R.layout.zhibiao, null);
		popupWindow = new PopupWindow(view,
				LinearLayout.LayoutParams.FILL_PARENT,
				LinearLayout.LayoutParams.FILL_PARENT);
		popupWindow.setAnimationStyle(android.R.style.Animation_Toast);
		ColorDrawable dw = new ColorDrawable(0xb0000000);
		popupWindow.setBackgroundDrawable(dw);

	}

	/**
	 * 数据解析
	 * 
	 */
	class QueryRain extends AsyncTask<String, Void, String> {

		@Override
		protected String doInBackground(String... params) {
			Map<String, String> fields = new HashMap<String, String>();
			return WebUtils.httpPost(params[0], fields);
		}

		@Override
		protected void onPostExecute(String result) {
			parJson(result,1);
			if (null == mRainLineDao) {
				progressDialog.dismiss();
				Toast toast = Toast.makeText(RainStation.this, "暂无信息!",
						Toast.LENGTH_SHORT);
				toast.setGravity(Gravity.CENTER, 0, 0);
				toast.show(); 
				return;
			}
		}
	}

	/**
	 * 数据解析2
	 * 
	 */
	class QueryRain2G extends AsyncTask<String, Void, String> {

		@Override
		protected String doInBackground(String... params) {
			Map<String, String> fields = new HashMap<String, String>();
			return WebUtils.httpPost(params[0], fields);
		}

		@Override
		protected void onPostExecute(String result) {
			parJson(result,2);
			if (null == mRainLineDao2G) {
				progressDialog.dismiss();
				Toast toast = Toast.makeText(RainStation.this, "暂无信息!",
						Toast.LENGTH_SHORT);
				toast.setGravity(Gravity.CENTER, 0, 0);
				toast.show(); 
				return;
			}
		}
	}

	/**
	 * 数据解析3
	 * 
	 */
	class QueryRain3G extends AsyncTask<String, Void, String> {
		@Override
		protected String doInBackground(String... params) {
			Map<String, String> fields = new HashMap<String, String>();
			return WebUtils.httpPost(params[0], fields);
		}

		@Override
		protected void onPostExecute(String result) {
			parJson(result,3);
			if (null == mRainLineDao3G) {
				progressDialog.dismiss();
				Toast toast = Toast.makeText(RainStation.this, "暂无信息!",
						Toast.LENGTH_SHORT);
				toast.setGravity(Gravity.CENTER, 0, 0);
				toast.show(); 
				return;
			}
		}
	}

	// 获取listview数据
	public void parJson(String result,int mdate) {
		try {
			System.out.println(":::::::::::::::::::::"+mdate);
			if(mdate==1){
				mRainLineDao = RainLineService.readXML(result);
				initOverlayItem(mRainLineDao);
			}
			else if(mdate==2){
				mRainLineDao2G = RainLineService.readXML2G(result);
			}
			else if(mdate==3){
				mRainLineDao3G = RainLineService.readXML3G(result);
			}
		} catch (Exception e) {
		}
	}

	/**
	 * 根据地图缩放级别显示数据
	 */
	public class MyMapViewListener implements MKMapViewListener {

		@Override
		public void onMapMoveFinish() {
			// TODO Auto-generated method stub
			mMapView.getOverlays().clear();
			nowMapLeave = mMapView.getZoomLevel();	
			if (mRainLineDao != null) {
				initOverlayItem(mRainLineDao);
			}
		}

	}

	private void init() {
		mMapView.setClickable(true);
		mMapView.setEnabled(true);
		mMapView.setTraffic(true);
		mMapView.setBuiltInZoomControls(true);
		mMapView.setDrawOverlayWhenZooming(true);// 设置在缩放动画过程中也显示overlay,默认为不绘制
		mapController = mMapView.getController();
		list = mMapView.getOverlays();
		mMapView.removeViewAt(1); // 去掉logo

	}

	private void initLocation() {
		mMapView.preLoad();
		// geoPoint = LanUtil.getGeoPoint(rpositions);////设置中心点
		geoPoint = new GeoPoint((int) (36.60839 * 1e6), (int) (116.99817 * 1e6));
		mapController.setZoom(10);
		if (null != geoPoint) {
			mapController.setCenter(geoPoint);
		}

	}
	//设置选中的某地名中心点
	private void locationCenter(int weiDu ,int jingDu ,int zoom) {
		mMapView.preLoad();
		//		geoPoint = LanUtil.getGeoPoint(rpositions);//设置中心点
		geoPoint = new GeoPoint( weiDu, jingDu);
		mapController.setZoom(zoom);
		if (null != geoPoint) {
			mapController.setCenter(geoPoint);
		}
	}

	private void initPopview() {
		// 创建点击mark时的弹出泡泡
		mPopView = super.getLayoutInflater().inflate(R.layout.popview, null);// 初始化弹出框
		mMapView.addView(mPopView, new MapView.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, null,
				MapView.LayoutParams.TOP_LEFT));
		mPopView.setVisibility(View.GONE);
	}

	private void initOverlayItem(List<RainLineDao> mRainLineDao) {
		if (null != mMapView) {
			mMapView.getOverlays().clear();
		}
		nowMapLeave = mMapView.getZoomLevel();
		Drawable marker = getResources().getDrawable(R.drawable.g_null); // 得到需要标在地图上的资源
		marker.setBounds(0, 0, marker.getIntrinsicWidth(),
				marker.getIntrinsicHeight()); // 为maker定义位置和边界
		mMapView.getOverlays().add(
				new OverItemT(marker, this, mRainLineDao, nowMapLeave)); // 添加ItemizedOverlay实例到mMapView
	}

	@Override
	protected void onPause() {
		WGApp app = (WGApp) this.getApplication();
		app.mBMapMan.stop();
		super.onPause();
	}

	@Override
	protected void onResume() {
		WGApp app = (WGApp) this.getApplication();
		app.mBMapMan.start();
		super.onResume();
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}

	// 创建菜单
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		/*menu.add(0, 1, 0, "多维监控");
		menu.add(0, 2, 1, "资源视图");
		menu.add(0, 3, 2, "性能视图");
		menu.add(0, 4, 3, "数据查询");*/
		menu.add(0, 1, 0, "关键指标信息");
		menu.add(0, 2, 1, "筛选基站");
		return true;
	}

	// 菜单点击事件
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		Intent intent = new Intent();
		switch (item.getItemId()) {
		case 1:
			/*intent.setClass(RainStation.this, MonViewActivity.class);
			startActivity(intent);
			RainStation.this.finish();*/
			intent.setClass(RainStation.this, KeyindexActivity.class);
			startActivity(intent);
			break;
		case 2:
			MyDialogSearchJiZhan();
			/*intent.setClass(RainStation.this, ZiyuanDataActivity.class);
			startActivity(intent);*/
			//new MyDialog(RainStation.this,false).setDisplay();
			//MyDialogSearch();
			break;
		case 3:
			/*intent.setClass(RainStation.this, SceneHistoryplayBack.class);
			startActivity(intent);*/
			break;
		case 4:
			/*intent.setClass(RainStation.this, DataFindLookActivity.class);
			startActivity(intent);*/
			break;

		}
		return true;
	}

	//条件筛选 选择基站名称
	private void MyDialogSearchJiZhan(){
		Dialog dialog = null;
		Builder builder = new AlertDialog.Builder(RainStation.this);
		String[] items = new String[RainStation.mRainLineDao.size()];
		if(RainStation.mRainLineDao.size()>0){	
			for(int i=0;i<mRainLineDao.size();i++ ){
				items[i]=mRainLineDao.get(i).getGwnode_name();
			}
		}
		//		Arrays.sort(items);	//给Array排序
		builder.setTitle("选择指标");
		DialogInterface.OnClickListener mutiListener2 = new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				checkIndex=which;
			}
		};

		builder.setSingleChoiceItems(items, -1, mutiListener2);
		DialogInterface.OnClickListener btnListener2 = 
				new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialogInterface, int which) {
				//获取经纬度
				double weiDu = Double.parseDouble(mRainLineDao.get(checkIndex).getWeidu());
				int weiDu1=(int) (weiDu * 1E6);
				double jingDu = Double.parseDouble(mRainLineDao.get(checkIndex).getJingdu());
				int jingDu1=(int) (jingDu * 1E6);
				//经,纬度,缩放级别
				locationCenter(weiDu1,jingDu1,15);

				//显示弹出框
				Drawable marker = null;
				new OverItemT(marker,RainStation.this,mRainLineDao,15).onTap(checkIndex);
			}
		};
		builder.setPositiveButton("确定", btnListener2);
		builder.setNegativeButton("取消", new OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				dialog.dismiss();
			}
		});
		dialog = builder.create();
		dialog.show();
	}


	//条件筛选 选择基站名称1
	private void MyDialogSearch(){
		Dialog dialog = null;
		Builder builder = new AlertDialog.Builder(RainStation.this);
		ArrayList<String> arrayList = new ArrayList<String>();
		String[] items = new String[RainStation.mRainLineDao.size()];
		if(RainStation.mRainLineDao.size()>0){	
			for(int i=0;i<mRainLineDao.size();i++ ){
				arrayList.add(mRainLineDao.get(i).getCell_name());
				items[i]=mRainLineDao.get(i).getCell_name();
			}
		}else{

		}


		builder.setTitle("选择小区名称");
		DialogInterface.OnClickListener mutiListener2 = new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
			}
		};

		builder.setSingleChoiceItems(items, -1, mutiListener2);
		DialogInterface.OnClickListener btnListener2 = 
				new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialogInterface, int which) {

			}
		};
		builder.setPositiveButton("确定", btnListener2);
		builder.setNegativeButton("取消", new OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				dialog.dismiss();
			}
		});
		dialog = builder.create();
		dialog.show();
	}

	/*
	 * @Override protected void onDestroy() {
	 * handler.removeCallbacks(runnableUi); super.onDestroy();
	 * 
	 * }
	 */
	// 显示popupwindow
	public void showAtLocation(View parent, int gravity, int x, int y) {
		if (null != popupWindow && popupWindow.isShowing()) {
			popupWindow.dismiss();
		}
		popupWindow.showAtLocation(parent, gravity, x, y);
		// 使其聚集
		popupWindow.setFocusable(true);
		// 设置允许在外点击消失
		// popupWindow.setOutsideTouchable(true);
		// 刷新状态
		popupWindow.update();
	}

	// 隐藏菜单
	public void G2event() {

	}

	public void dismiss() {
		popupWindow.dismiss();
	}


	class MyDialog extends Dialog implements View.OnClickListener {

		private Button button1_date;
		private Button button2_date;
		private EditText start_time;
		private EditText end_time;
		private Button cancelButton;// 取消按钮
		private Button okButton;// 确定按钮
		private ListViewDialogAdapter mAdapter;
		private Context context;
		public MyDialog(Context context,boolean flag) {
			super(context);
			this.context=context;	

		}

		public void setDisplay() {
			setContentView(R.layout.rain_dialog);// 设置对话框的布局
			button1_date = (Button) findViewById(R.id.button1_date);// 开始日期按钮
			button2_date = (Button) findViewById(R.id.button2_date);// 结束日期按钮
			start_time = (EditText) findViewById(R.id.start_time);// 开始时间文本框
			end_time = (EditText) findViewById(R.id.end_time);// 结束时间文本框
			cancelButton = (Button) findViewById(R.id.no_query);// 取消按钮
			okButton = (Button) findViewById(R.id.yes_query);// 确定按钮
			okButton.setOnClickListener(listener);
			button1_date.setOnClickListener(listener);
			button2_date.setOnClickListener(listener);
			cancelButton.setOnClickListener(new View.OnClickListener() {
				@Override
				public void onClick(View v) {
					dismiss();
				}
			});

			setTitle("查询条件");// 设定对话框的标题
			start_time.setText(new StringBuilder().append(startYear)
					.append("-").append(format(startMonth + 1)).append("-")
					.append(format(startDay))
					.append(" ").append("00:00:00"));
			end_time.setText(new StringBuilder().append(endYear)
					.append("-").append(format(endMonth + 1)).append("-")
					.append(format(endDay))
					.append(" ").append("23:59:59"));
			show();// 显示对话框
		}

		private View.OnClickListener listener = new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Dialog dialog = null;
				Builder builder = new AlertDialog.Builder(RainStation.this);
				switch (v.getId()) {
				case R.id.button1_date:
					initstarttime(start_time,1);
					break;
				case R.id.button2_date:
					initstarttime(end_time,2);
					break;
				case R.id.yes_query:
					dismiss();
					//					progressDialog = ProgressDialog.show(RainStation.this, "请等待...", "正在加载信息,请稍后...",true, true);
					//					String path2 = "";
					//					try {
					//						path2 = URLUtil.KEYINDEX
					//								+ "?startTime="+  URLEncoder.encode(start_time.getText().toString(),"utf-8")
					//								+ "&endTime="+  URLEncoder.encode(end_time.getText().toString(),"utf-8")
					//								+"&granularity=";
					//					} catch (UnsupportedEncodingException e) {
					//						// TODO Auto-generated catch block
					//						e.printStackTrace();
					//					}
					//					System.out.println("我日开始"+start_time.getText().toString());
					//					System.out.println("我日结束"+end_time.getText().toString());
					//					/* 8888888888  此处QueryRain()为假的                 88888888888888888888888888*/
					//					new QueryRain().execute(path2);
					break;

				default:
					break;
				}
			}

		};
		private String format(int x) {
			String s = "" + x;
			if (s.length() == 1)
				s = "0" + s;
			return s;
		}
		@Override
		public void onClick(View v) {
		}

	}

	/**
	 * Updates day wheel. Sets max days according to selected month and year
	 */
	void updateDays(WheelView year, WheelView month, WheelView day) {

		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR,
				calendar.get(Calendar.YEAR) + year.getCurrentItem());
		calendar.set(Calendar.MONTH, month.getCurrentItem());

		int maxDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
		day.setViewAdapter(new DateNumericAdapter(this, 1, maxDays, calendar
				.get(Calendar.DAY_OF_MONTH) - 1));
		int curDay = Math.min(maxDays, day.getCurrentItem() + 1);
		day.setCurrentItem(curDay - 1, true);
	}
	/**
	 * Adapter for numeric wheels. Highlights the current value.
	 */
	private class DateNumericAdapter extends NumericWheelAdapter {
		// Index of current item
		int currentItem;
		// Index of item to be highlighted
		int currentValue;

		/**
		 * Constructor
		 */
		public DateNumericAdapter(Context context, int minValue, int maxValue,
				int current) {
			super(context, minValue, maxValue);
			this.currentValue = current;
			setTextSize(16);
		}

		public DateNumericAdapter(Context context, int minValue, int maxValue,
				int current, String format) {
			super(context, minValue, maxValue, format);
			this.currentValue = current;
			setTextSize(16);
		}

		@Override
		protected void configureTextView(TextView view) {
			super.configureTextView(view);
			if (currentItem == currentValue) {
				view.setTextColor(0xFF0000F0);
			}
			view.setTypeface(Typeface.SANS_SERIF);
		}

		@Override
		public View getItem(int index, View cachedView, ViewGroup parent) {
			currentItem = index;
			return super.getItem(index, cachedView, parent);
		}
	}
	/**
	 * Adapter for string based wheel. Highlights the current value.
	 */
	private class DateArrayAdapter extends ArrayWheelAdapter<String> {
		// Index of current item
		int currentItem;
		// Index of item to be highlighted
		int currentValue;

		/**
		 * Constructor
		 */
		public DateArrayAdapter(Context context, String[] items, int current) {
			super(context, items);
			this.currentValue = current;
			setTextSize(16);
		}

		@Override
		protected void configureTextView(TextView view) {
			super.configureTextView(view);
			if (currentItem == currentValue) {
				view.setTextColor(0xFF0000F0);
			}
			view.setTypeface(Typeface.SANS_SERIF);
		}

		@Override
		public View getItem(int index, View cachedView, ViewGroup parent) {
			currentItem = index;
			return super.getItem(index, cachedView, parent);
		}
	}
	/**
	 * 时间控件
	 * */
	private void initstarttime(final TextView sTextView,final int flag) {
		LayoutInflater inflater=LayoutInflater.from(this);
		final View dialog=inflater.inflate(R.layout.date_layout_dialog, null);
		final Calendar calendar = Calendar.getInstance();
		final WheelView day = (WheelView) dialog.findViewById(R.id.day);
		final WheelView month = (WheelView) dialog.findViewById(R.id.month);
		final WheelView year = (WheelView) dialog.findViewById(R.id.year);
		final WheelView hours = (WheelView) dialog.findViewById(R.id.hour);
		final WheelView mins = (WheelView) dialog.findViewById(R.id.mins);
		final WheelView seconds = (WheelView) dialog.findViewById(R.id.seconds);
		AlertDialog.Builder builder=new AlertDialog.Builder(RainStation.this);
		builder.setTitle("选择时间");
		builder.setView(dialog); //关键
		builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				sTextView.setText(calendar.get(Calendar.YEAR) + year.getCurrentItem()+"-"
						+((month.getCurrentItem()+1<10)?("0"+(month.getCurrentItem()+1)):month.getCurrentItem()+1)+"-"
						+(day.getCurrentItem() + 1)
						+" "+hours.getCurrentItem()+":"
						+((mins.getCurrentItem() < 10) ? ("0" + mins.getCurrentItem()) : mins.getCurrentItem())+":"
						+((seconds.getCurrentItem() < 10) ? ("0" + seconds.getCurrentItem()) : seconds.getCurrentItem()));
				if(flag==1){
					start_time=calendar.get(Calendar.YEAR) + year.getCurrentItem()+"-"
							+((month.getCurrentItem()+1<10)?("0"+(month.getCurrentItem()+1)):month.getCurrentItem()+1)+"-"
							+(day.getCurrentItem() + 1)
							+" "+hours.getCurrentItem()+":"
							+((mins.getCurrentItem() < 10) ? ("0" + mins.getCurrentItem()) : mins.getCurrentItem())+":"
							+((seconds.getCurrentItem() < 10) ? ("0" + seconds.getCurrentItem()) : seconds.getCurrentItem());
				}else if (flag==2) {
					end_time=calendar.get(Calendar.YEAR) + year.getCurrentItem()+"-"
							+((month.getCurrentItem()+1<10)?("0"+(month.getCurrentItem()+1)):month.getCurrentItem()+1)+"-"
							+(day.getCurrentItem() + 1)
							+" "+hours.getCurrentItem()+":"
							+((mins.getCurrentItem() < 10) ? ("0" + mins.getCurrentItem()) : mins.getCurrentItem())+":"
							+((seconds.getCurrentItem() < 10) ? ("0" + seconds.getCurrentItem()) : seconds.getCurrentItem());
				}

			}
		});
		builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.dismiss();
			}
		});

		OnWheelChangedListener listener = new OnWheelChangedListener() {
			public void onChanged(WheelView wheel, int oldValue, int newValue) {
				updateDays(year, month, day);
			}
		};
		OnWheelScrollListener scrollListener = new OnWheelScrollListener() {
			public void onScrollingStarted(WheelView wheel) {}
			public void onScrollingFinished(WheelView wheel) {}
		};
		// year
		int curYear = calendar.get(Calendar.YEAR);
		year.setViewAdapter(new DateNumericAdapter(this, curYear, curYear + 10,0));
		year.setCurrentItem(curYear);
		year.addChangingListener(listener);
		year.addScrollingListener(scrollListener);
		// month
		int curMonth = calendar.get(Calendar.MONTH);
		String months[] = new String[] { "1月", "2月", "3月", "4月", "5月", "6月","7月", "8月", "9月", "10月", "11月", "12月" };
		month.setViewAdapter(new DateArrayAdapter(this, months, curMonth));
		month.setCurrentItem(curMonth);
		month.addChangingListener(listener);
		month.addScrollingListener(scrollListener);
		// day
		updateDays(year, month, day);
		day.setCurrentItem(calendar.get(Calendar.DAY_OF_MONTH) - 1);
		day.addScrollingListener(scrollListener);
		// hour
		int curHours = calendar.get(Calendar.HOUR_OF_DAY);
		hours.setViewAdapter(new DateNumericAdapter(this, 0, 23, curHours));
		hours.setCurrentItem(curHours);
		hours.addScrollingListener(scrollListener);
		// minus
		int curMinutes = calendar.get(Calendar.MINUTE);
		mins.setViewAdapter(new DateNumericAdapter(this, 0, 59, curMinutes,"%02d"));
		mins.setCyclic(true);
		mins.setCurrentItem(curMinutes);
		mins.addScrollingListener(scrollListener);
		//second
		int curSeconds=calendar.get(Calendar.SECOND);
		seconds.setViewAdapter(new DateNumericAdapter(this, 0, 59, curSeconds,"%02d"));
		seconds.setCurrentItem(curSeconds);
		seconds.setCyclic(true);
		seconds.addScrollingListener(scrollListener);

		builder.create().show();
	}
}

// 坐表
class OverItemT extends ItemizedOverlay<OverlayItem> {
	private List<OverlayItem> mGeoList = new ArrayList<OverlayItem>();
	private Drawable marker;
	private RainStation mContext;
	private List<RainLineDao> listmp = null;
	// 存放获取的数据
	public static List<RainLineDao> mRainLineDao;

	public OverItemT(Drawable marker, Context context,
			List<RainLineDao> mRainLineDao, int nowMapLeave) {
		super(boundCenterBottom(marker));
		int t = 1;
		this.marker = marker;
		this.mContext = (RainStation) context;
		double mLat1 = 36.376601;// 39.9022; // point1纬度
		double mLon1 = 116.90301;// 116.3822;// point1经度

		List<String> data = new ArrayList<String>();
		for (RainLineDao mposition : mRainLineDao) {
			data.add(mposition.getJingdu() + "," + mposition.getWeidu() + ","
					+ mposition.getGsmwcdma() + "," + mposition.getGsmwcdma());
		}

		if (nowMapLeave > 10 && nowMapLeave < 13) {
			t = 1;
		} else if (nowMapLeave == 10) {
			t = 20;
		} else if (nowMapLeave == 9) {
			t = 33;
		} else if (nowMapLeave == 8) {
			t = 40;
		} else if (nowMapLeave == 7) {
			t = 60;
		} else if (nowMapLeave == 6) {
			t = 80;
		} else if (nowMapLeave <= 5) {
			t = data.size();
		}
		for (int i = 0; i < data.size(); i = i + t) {
			if (nowMapLeave < 5) {
				break;
			}
			/*
			 * RainLineDao mposition = mRainLineDao.get(i); // for (RainLineDao
			 * mposition : mRainLineDao) { mLat1 =
			 * Double.parseDouble(mposition.getJingdu()); mLon1 =
			 * Double.parseDouble(mposition.getWeidu());
			 * //mContext.mapController.setCenter(new GeoPoint((int) (mLon1 *
			 * 1E6), // (int) (mLat1 * 1E6))); // 画出坐标 if (mLon1 != 0 && mLat1
			 * != 0) { mGeoList.add(new OverlayItem(new GeoPoint((int) (mLon1 *
			 * 1E6), (int) (mLat1 * 1E6)), mposition.getGsmwcdma(),
			 * mposition.getGsmwcdma())); }
			 */

			String str = data.get(i).replaceAll(" ", "");
			String[] pstr = str.split(",");
			mLat1 = Double.parseDouble(pstr[1]);
			mLon1 = Double.parseDouble(pstr[0]);
			mGeoList.add(new OverlayItem(new GeoPoint((int) (mLat1 * 1E6),
					(int) (mLon1 * 1E6)), pstr[2], pstr[3]));
			mContext.progressDialog.dismiss();

		}
		// 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6)
		/*
		 * for (Rposition mposition : listmp) { //画出坐标 if (mposition.getWeidu()
		 * != 0 && mposition.getJingdu() != 0) { mGeoList.add(new OverlayItem(
		 * new GeoPoint((int) (mposition.getWeidu() * 1E6), (int)
		 * (mposition.getJingdu() * 1E6)), mposition .getAlarm_node(),
		 * mposition.getGsmwcdma() + mposition.getInfo1())); } }
		 */
		populate(); // createItem(int)方法构造item。一旦有了数据,在调用其它方法前,首先调用这个方法
	}

	@Override
	public void draw(Canvas canvas, MapView mapView, boolean shadow) {
		// Projection接口用于屏幕像素坐标和经纬度坐标之间的变换
		Projection projection = mapView.getProjection();

		for (int index = size() - 1; index >= 0; index--) { // 遍历mGeoList
			OverlayItem overLayItem = getItem(index); // 得到给定索引的item
			String title = overLayItem.getTitle();
			// 把经纬度变换到相对于MapView左上角的屏幕像素坐标
			Point point = projection.toPixels(overLayItem.getPoint(), null);
			// 在坐标点画红色的圆
			Paint paintCircle = new Paint();
			paintCircle.setColor(Color.RED);
			canvas.drawCircle(point.x, point.y, 5, paintCircle); // 画圆

			if (overLayItem.getSnippet().equals("GSMVIP")) {
				Drawable marker = mContext.getResources().getDrawable(
						R.drawable.g_vip);
				overLayItem.setMarker(boundCenterBottom(marker));
			} else if (overLayItem.getSnippet().equals("GSM")) {
				Drawable marker = mContext.getResources().getDrawable(
						R.drawable.g_a);
				overLayItem.setMarker(boundCenterBottom(marker));
			} else if (overLayItem.getSnippet().equals("GSMB")) {
				Drawable marker = mContext.getResources().getDrawable(
						R.drawable.g_b);
				overLayItem.setMarker(boundCenterBottom(marker));
			} else if (overLayItem.getSnippet().equals("GSMC")) {
				Drawable marker = mContext.getResources().getDrawable(
						R.drawable.g_c);
				overLayItem.setMarker(boundCenterBottom(marker));
			} else if (overLayItem.getSnippet().equals("WCDMAVIP")) {
				Drawable marker = mContext.getResources().getDrawable(
						R.drawable.w_vip);
				overLayItem.setMarker(boundCenterBottom(marker));
			} else if (overLayItem.getSnippet().equals("WCDMAA")) {
				Drawable marker = mContext.getResources().getDrawable(
						R.drawable.w_a);
				overLayItem.setMarker(boundCenterBottom(marker));
			} else if (overLayItem.getSnippet().equals("WCDMAB")) {
				Drawable marker = mContext.getResources().getDrawable(
						R.drawable.w_b);
				overLayItem.setMarker(boundCenterBottom(marker));
			} else if (overLayItem.getSnippet().equals("WCDMAC")) {
				Drawable marker = mContext.getResources().getDrawable(
						R.drawable.w_c);
				overLayItem.setMarker(boundCenterBottom(marker));
			}

			// 可在此处添加您的绘制代码
			Paint paintText = new Paint();
			paintText.setColor(R.color.dimgray);
			// paintText.setColor(Color.BLACK);
			// paintText.setSubpixelText(true);
			paintText.setTypeface(mContext.typeface);
			paintText.setTextSize(16);
			canvas.drawText(title, point.x - 30, point.y + 20, paintText); // 绘制文本

		}

		super.draw(canvas, mapView, shadow);
		// 调整一个drawable边界,使得(0,0)是这个drawable底部最后一行中心的一个像素
		boundCenterBottom(marker);

	}

	@Override
	protected OverlayItem createItem(int i) {
		return mGeoList.get(i);
	}

	@Override
	public int size() {
		return mGeoList.size();
	}

	@Override
	// 处理当点击事件
	protected boolean onTap(int i) {
		setFocus(mGeoList.get(i));
		GeoPoint pt = mGeoList.get(i).getPoint();
		MapView.LayoutParams geoLP = new MapView.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, pt,
				MapView.LayoutParams.BOTTOM_CENTER);
		mContext.mMapView.updateViewLayout(mContext.mPopView, geoLP);
		mContext.mPopView.setVisibility(View.VISIBLE);
		/*-------------------------------------------------------*/
		//GWNODE_NAME 基站名称
		String Gsmwcdma= RainStation.mRainLineDao.get(i).getGsmwcdma();//网络类别
		String Site_abc= RainStation.mRainLineDao.get(i).getSite_abc();//基站级别
		String Gwnode_name= RainStation.mRainLineDao.get(i).getGwnode_name();//基站名称
		String Cells= RainStation.mRainLineDao.get(i).getCells();//小区  NJ187-党家支局O-41064,NJ187-党家支局O-41066
		if(Cells.indexOf(",")>=0){
			int end=Cells.indexOf(",");
			Cells=Cells.substring(0, end);
			//			System.out.println("Cells:"+Cells);
		}

		//判断网络类型调用相应2G/3G接口
		int j=-1,k=-1;
		if(Gsmwcdma.equals("GSM")){		
			for( j=0;j<RainStation.mRainLineDao2G.size();j++){
				if(Cells.equals(RainStation.mRainLineDao2G.get(j).getCell_name())){
					break;
				}
			}
		}else if(Gsmwcdma.equals("WCDMA")){
			for( k=0;k<RainStation.mRainLineDao3G.size();k++){
				if(Cells.equals(RainStation.mRainLineDao3G.get(k).getCell_name3G())){
					break;
				}
			}
		}

		LinearLayout guideLinearLayout = (LinearLayout) mContext.mPopView
				.findViewById(R.id.con_s);
		guideLinearLayout.removeAllViews();
		LinearLayout guide_typesitem = (LinearLayout) mContext.inflater
				.inflate(R.layout.thepopview, null);
		/*((Button) guide_typesitem.findViewById(R.id.g2_xiaoqu))
				.setOnClickListener(new View.OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						// Toast.makeText(mContext, "okok",
						// Toast.LENGTH_SHORT).show();
						NewpopWindowsuntil aa = new NewpopWindowsuntil(mContext);
						aa.showPopwindows(
								mContext.findViewById(R.id.g2_xiaoqu),
								Gravity.CENTER, 0, 0);
					}
				});*/
		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_names)).setText(RainStation.mRainLineDao.get(i).getGwnode_name());//基站名称
		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_titles)).setText(RainStation.mRainLineDao.get(i).getCells());//小区

		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_msc)).setText(RainStation.mRainLineDao.get(i).getRelated_msc());//所属MSC
		// Dn
		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_cdmas)).setText(RainStation.mRainLineDao.get(i).getGsmwcdma());//网络类别
		// 类别
		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_citys)).setText(RainStation.mRainLineDao.get(i).getArea_name());//地市
		// 城市
		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_bscs)).setText(RainStation.mRainLineDao.get(i).getRelated_bsc());//所属BSC/RNC
		// 标示
		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_levels)).setText(RainStation.mRainLineDao.get(i).getSite_abc());//基站级别
		// 生产厂商
		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_jingdus)).setText(RainStation.mRainLineDao.get(i).getJingdu());//经度
		// 经度
		((TextView)
				guide_typesitem.findViewById(R.id.jizhan_weidus)).setText(RainStation.mRainLineDao.get(i).getWeidu());//纬度
		//添加全部信息到视图
		guideLinearLayout.addView(guide_typesitem);


		//2G信息
		if(j>=0){
			LinearLayout guide_typesitem2G = (LinearLayout) mContext.inflater
					.inflate(R.layout.thepopview2g, null);

			// 所属MSS:
			((TextView)
					guide_typesitem2G.findViewById(R.id.jizhan2g_mss)).setText(RainStation.mRainLineDao2G.get(j).getRelated_mss() );//纬度
			// 业务信道总话务量ERL:
			((TextView)
					guide_typesitem2G.findViewById(R.id.jizhan2g_erl)).setText(RainStation.mRainLineDao2G.get(j).getTch_traffic() );//纬度
			//业务信道每信道话务量ERL:
			((TextView)
					guide_typesitem2G.findViewById(R.id.jizhan2g_pererl)).setText(RainStation.mRainLineDao2G.get(j).getTch_pertraffic() );//纬度
			// TCH掉话率:
			((TextView)
					guide_typesitem2G.findViewById(R.id.jizhan2g_tch)).setText(RainStation.mRainLineDao2G.get(j).getTch_droprate() );//纬度
			// 2G无线利用率:
			((TextView)
					guide_typesitem2G.findViewById(R.id.jizhan2g_wireless_userate)).setText(RainStation.mRainLineDao2G.get(j).getWireless_userate() );//纬度
			// 登记用户数:
			((TextView)
					guide_typesitem2G.findViewById(R.id.jizhan2g_nbr_user)).setText(RainStation.mRainLineDao2G.get(j).getNbr_user() );//纬度
			// 上行流量:
			((TextView)
					guide_typesitem2G.findViewById(R.id.jizhan2g_psuioct)).setText(RainStation.mRainLineDao2G.get(j).getPsuioct() );//纬度
			// 下行流量:
			((TextView)
					guide_typesitem2G.findViewById(R.id.jizhan2g_psdioct)).setText(RainStation.mRainLineDao2G.get(j).getPsdioct() );//纬度
			//添加2G信息到视图
			guideLinearLayout.addView(guide_typesitem2G);
		}



		//3G信息
		if(k>=0){
			LinearLayout guide_typesitem3G = (LinearLayout) mContext.inflater
					.inflate(R.layout.thepopview3g, null);

			// 所属MSS:
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_MSS)).setText(RainStation.mRainLineDao3G.get(k).getRelated_mss3G() );//纬度
			// 分组域上行流量(KB):
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_psuioct)).setText(RainStation.mRainLineDao3G.get(k).getPsuioct3G() );//纬度
			// 分组域下行流量(KB):
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_psdioct)).setText(RainStation.mRainLineDao3G.get(k).getPsdioct3G() );//纬度

			// HSDPA RAB建立成功率:
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_hsdpa_rab)).setText(RainStation.mRainLineDao3G.get(k).getHsdpa_rabrate() );//纬度

			// HSUPA RAB建立成功率:
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_hsupa_rab)).setText(RainStation.mRainLineDao3G.get(k).getHsupa_rabrate() );//纬度

			// HSDPA平均在线用户数:
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_hsdpa)).setText(RainStation.mRainLineDao3G.get(k).getHsdpa_meannbruser() );//纬度

			// HSUPA平均在线用户数:
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_hsupa)).setText(RainStation.mRainLineDao3G.get(k).getHsupa_meannbruser() );//纬度

			// IUCS口话务量/电路域话务量(ERL):
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_cstraffic)).setText(RainStation.mRainLineDao3G.get(k).getCstraffic() );//纬度
			// 登记用户数:
			((TextView)
					guide_typesitem3G.findViewById(R.id.jizhan3g_nbr_user)).setText(RainStation.mRainLineDao3G.get(k).getNbr_user3G() );//纬度

			guideLinearLayout.addView(guide_typesitem3G);
		}





		/*for (int index = size() - 1; index >= 0; index--) {
			OverlayItem overLayItem = getItem(index);
			if (overLayItem.getPoint().getLatitudeE6() == pt.getLatitudeE6()
					&& overLayItem.getPoint().getLongitudeE6() == pt
							.getLongitudeE6()
					&& !overLayItem.getTitle().equals(
							mGeoList.get(i).getTitle())) {
				LinearLayout guide_typesitems = (LinearLayout) mContext.inflater
						.inflate(R.layout.popviews, null);
				guideLinearLayout.addView(guide_typesitems);
			}
		}*/

		return true;
	}

	@Override
	public boolean onTap(GeoPoint arg0, MapView arg1) {
		// 消去弹出的气泡
		mContext.mPopView.setVisibility(View.GONE);
		return super.onTap(arg0, arg1);
	}

}
相关标签: 百度地图