百度地图是通过移动通信基站定位来确定当前位置所在的城市。其原理就是通过测算周围基站与手机的距离来交会估算手机的空间位置。
手机定位是指通过特定的定位技术来获取移动手机或终端用户的位置信息(经纬度坐标),在电子地图上标出被定位对象的位置的技术或服务。定位技术有两种,一种是基于GPS的定位,一种是基于移动运营网的基站的定位。基于GPS的定位方式是利用手机上的GPS定位模块将自己的位置信号发送到定位后台来实现手机定位的。基站定位则是利用基站对手机的距离的测算距离来确定手机位置的。后者不需要手机具有GPS定位能力,但是精度很大程度依赖于基站的分布及覆盖范围的大小,有时误差会超过一公里。前者定位精度较高。此外还有利用Wifi在小范围内定位的方式。
在onLocationChanged方法里获得自己当前的坐标然后方法里写 mSearch.reverseGeocode(new GeoPoint((int)(location.getLatitude()*1e6),(int)(location.getLongitude()*1e6))); 然后再通过代码实行这个方法功能 public class MySearchListener implements MKSearchListener { public void onGetAddrResult(MKAddrInfo result, int error){ MKGeocoderAddressComponent kk=result.addressComponents; String city=kk.city; }} city就是你所在城市
刚刚写了这个方法,直接调用GetAddressFromGeoPoint(geoPoint)代码如下:
/**
* 通过经纬度获取地址
* @param GeoPoint
*/
public void GetAddressFromGeoPoint(GeoPoint geoPoint)
{
mkSearch = new MKSearch();
mkSearch.init(app.mBMapMan, new MySearchListener());
mkSearch.reverseGeocode(geoPoint);
}
/**
* 监听方法里面通过实现onGetAddrResult取得地址
*/
public class MySearchListener implements MKSearchListener
{
public void onGetAddrResult(MKAddrInfo res, int error)
{
if (error != 0)
{
String str = String.format("错误号:%d", error);
return;
}
String strInfo = String.format("城市:%\r\n 地址:%s\r\n",
res.addressComponents.city,
res.addressComponents.district +
res.addressComponents.street );
Log.i("ADDR", strInfo);
//Toast.makeText(Geocoder.this, strInfo, Toast.LENGTH_LONG).show();
TextView addrTextView = (TextView)popView.findViewById(R.id.tvAddress);
addrTextView.setText(strInfo);
}
public void onGetWalkingRouteResult(MKWalkingRouteResult res,
int error) {
}
@Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
}