中国计量学院本科毕业设计(论文)
}
/***************获取当前基站信息 @throws Exception***********/ public SCell getCellInfo() throws Exception { SCell cell = new SCell(); //得到当前基站信息 mTelManCur = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mGsmlocation = (GsmCellLocation)mTelManCur.getCellLocation(); if (mGsmlocation == null) throw new Exception(\获取基站信息失败\ String operator = mTelManCur.getNetworkOperator(); int Mcc = Integer.parseInt(operator.substring(0, 3)); int Mnc = Integer.parseInt(operator.substring(3)); int Cid = mGsmlocation.getCid(); int Lac = mGsmlocation.getLac(); return cell; }
33
中国计量学院本科毕业设计(论文)
附录 B:
public class BaiduMaps extends MapActivity{
//创建地图
mBMapMan = new BMapManager(getApplication());
mBMapMan.init(\null);
super.initMapActivity(mBMapMan);
mMapView = (MapView) findViewById(R.id.bmapsView);//地图控件,不添加的话,就不用写。
mMapView.setBuiltInZoomControls(true); //设置启用内置的缩放控件 MapController mMapController = mMapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
GeoPoint point = new GeoPoint((int) (30.32504116 * 1E6),(int) (120.3665129 * 1E6)); //用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) mMapController.setCenter(point); //设置地图中心点 mMapController.setZoom(15); //设置地图zoom级别
res.add(getResources().getDrawable(R.drawable.icon_marka));
/*********************极大似然法定位*************************/ middata=getmiddata(mobiledata,originaldata);
int [][]a=xyarray(middata); double [][]b=arrayA(a); double[]c=arrayb(a,middata);
GeoPoint p1=exforlatlon(matrixcalculate(b,c));
//定位误差判断 double lat=0; double lon=0;
double min=middata[0][0]; double max=middata[0][0];
//遍历找纬度最大值最小值
for(int i=0;i if(min>middata[i][0]) { min=middata[i][0]; } if(max max=middata[i][0]; 34 中国计量学院本科毕业设计(论文) } //偏差过大采用加权平均法 } if(Math.abs(p1.getLatitudeE6()-middata[0][0]*1E6)>(max-min)*1E6){ for(int i=0;i lat+=middata[i][0]*(middata.length-i); //System.out.println(\for(int i=0;i lon+=middata[i][1]*(middata.length-i); //System.out.println(\ locgeopoint = new GeoPoint((int)(lat*1E6/(middata.length*(middata.length+1)/2)),(int)(lon*1E6/(middata.length*(middata.length+1)/2))); } else locgeopoint=p1; //System.out.println(locgeopoint); /*********************WIFI辅助定位****************************/ WifiManager wifiMgr = (WifiManager)getSystemService(Context.WIFI_SERVICE); if(wifiMgr.isWifiEnabled()){ wifilocdata=getwifidata(macs,macoriginaldata); //和纯基站定位结果进行加权平均 locgeopoint = new GeoPoint((int)((locgeopoint.getLatitudeE6()/(1E6)+wifilocdata[0]*19)*1E6/20),(int)((locgeopoint.getLongitudeE6()/(1E6)+wifilocdata[1]*19)*1E6/20)); // 准备overlay 数据 int iSize=finaldata.length; TextView wifiText = (TextView) findViewById(R.id.wifiText); String wifistring=wifilocdata[0]+\wifiText.setText(wifistring); } //locgeopoint = new GeoPoint((int)(wifilocdata[0]*1E6),(int)(wifilocdata[1]*1E6)); 35 中国计量学院本科毕业设计(论文) for(int i=0;i double mLat=finaldata[i][0]; //System.out.println(i+\//System.out.println(i+\ double mLon=finaldata[i][1]; // 构造OverlayItem的三个参数依次为:item的位置,标题文本,文字片段 OverlayItem item= new OverlayItem(new GeoPoint((int) (mLat * 1E6), (int) (mLon * 1E6)),\基站\ if(i==iSize-1){//最后定位点的标注 item.setMarker(res.get(7)); } else GeoList.add(item); item.setMarker(res.get(i%(res.size()))); } // 添加ItemizedOverlay Drawable marker = getResources().getDrawable(R.drawable.icon_marka); //得到需要标在地图上的资源 mMapView.getOverlays().clear(); marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); //为maker定义位置和边界 OverItemT overitem = new OverItemT(marker, this); mMapView.getOverlays().add(overitem); //添加ItemizedOverlay实例 到mMapView //计算距离函数 public double getdistance(int r) { double d; d=Math.pow(10,(r+4.2)/(-33)); return d; } //矩阵计算函数 注意:此处计算结果为int型 } 36 中国计量学院本科毕业设计(论文) public Point matrixcalculate(double[][] a1,double[] a2){ Point mylocationpoint=new Point(); Matrix A=new Matrix(a1); Matrix B=new Matrix(a2,middata.length-1); Matrix C=A.transpose().times(A);//A的转置 * A Matrix D=C.inverse().times(A.transpose());//(A的转置 * A)的逆矩阵 * (A的转置) Matrix E=D.times(B);//(A的转置 * A)的逆矩阵 * (A的转置) * B double[][] resultarray=E.getArray(); mylocationpoint.x=(int) resultarray[0][0]; mylocationpoint.y=(int) resultarray[1][0]; return mylocationpoint; } //批量将经纬度数组转换为xy坐标数组 public int[][] xyarray(double[][] zhongjianshuju){ int[][] xy=new int[zhongjianshuju.length][2];//注:定义二维数组已经出错多处 for(int i=0;i return xy; { } } //System.out.println(xy[i][0]+\for(int j=0;j<2;j++) { xy[i][0]=exforxy(zhongjianshuju[i][0],zhongjianshuju[i][1]).x; xy[i][1]=exforxy(zhongjianshuju[i][0],zhongjianshuju[i][1]).y; } 37 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Android系统的基站定位实现毕业论文(9)在线全文阅读。
相关推荐: