android 百度地图定位获取经纬度已经拿经纬度得到地址信息
1:基本数据的初始化
/** * 定位 */ private void initLocation() { mLocationClient = new LocationClient(getApplicationContext()); mLocationClient.registerLocationListener(new MyLocationListenner());
LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setAddrType("all"); // 设置地址信息,仅设置为“all”时有地址信息,默认无地址信息 option.setScanSpan(10000); // 设置定位模式,小于1秒则一次定位;大于等于1秒则定时定位 mLocationClient.setLocOption(option);
try { mLocationClient.start(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Log.e("GPS--->Exception", e.toString()); }
}
2:经纬度监听
/** * 监听函数,又新位置的时候,格式化成字符串,输出到屏幕中 */ public class MyLocationListenner implements BDLocationListener { public void onReceiveLocation(BDLocation location) { if (location == null) return;
// 将用户输入的经纬度值转换成int类型 int longitude = (int) (1000000 * Double.parseDouble(location .getLongitude() + "")); int latitude = (int) (1000000 * Double.parseDouble(location .getLatitude() + "")); mLocationClient.stop();
// 查询该经纬度值所对应的地址位置信息 mMKSearch.reverseGeocode(new GeoPoint(latitude, longitude));
}
/** * 离线定位 */ public void onReceivePoi(BDLocation poiLocation) { if (poiLocation == null) { return; }
} }
3:初始化定位服务:
private void initManager() { // 初始化MapActivity mapManager = new BMapManager(AppContext.this); // init方法的第一个参数需填入申请的API Key mapManager.init(strKey, null);
// 初始化MKSearch mMKSearch = new MKSearch(); mMKSearch.init(mapManager, new MySearchListener());
}
4:回调接口监听数据:
/** * 内部类实现MKSearchListener接口,用于实现异步搜索服务 */ public class MySearchListener implements MKSearchListener { /** * 根据经纬度搜索地址信息结果 * * @param result * 搜索结果 * @param iError * 错误号(0表示正确返回) */ @Override public void onGetAddrResult(MKAddrInfo result, int iError) { if (result == null) { return; }
mAdress = result.strAddr;
StringBuffer sb = new StringBuffer(); // 经纬度所对应的位置 sb.append(result.strAddr).append("/n"); // 判断该地址附近是否有POI(Point of Interest,即兴趣点) if (null != result.poiList) { // 遍历所有的兴趣点信息 for (MKPoiInfo poiInfo : result.poiList) { sb.append("名称:").append(poiInfo.name).append("/n"); sb.append("地址:").append(poiInfo.address).append("/n"); sb.append("经度:") .append(poiInfo.pt.getLongitudeE6() / 1000000.0f) .append("/n"); sb.append("纬度:") .append(poiInfo.pt.getLatitudeE6() / 1000000.0f) .append("/n"); sb.append("电话:").append(poiInfo.phoneNum).append("/n"); sb.append("邮编:").append(poiInfo.postCode).append("/n"); // poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路 sb.append("类型:").append(poiInfo.ePoiType).append("/n"); } Log.e("地址---->", sb.toString()); } }
/** * 驾车路线搜索结果 * * @param result * 搜索结果 * @param iError * 错误号(0表示正确返回) */ @Override public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) { }
/** * POI搜索结果(范围检索、城市POI检索、周边检索) * * @param result * 搜索结果 * @param type * 返回结果类型(11,12,21:poi列表 7:城市列表) * @param iError * 错误号(0表示正确返回) */ @Override public void onGetPoiResult(MKPoiResult result, int type, int iError) { }
/** * 公交换乘路线搜索结果 * * @param result * 搜索结果 * @param iError * 错误号(0表示正确返回) */ @Override public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) { }
/** * 步行路线搜索结果 * * @param result * 搜索结果 * @param iError * 错误号(0表示正确返回) */ @Override public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) { }
@Override public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { // TODO Auto-generated method stub
}
@Override public void onGetPoiDetailSearchResult(int arg0, int arg1) { // TODO Auto-generated method stub
}
@Override public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { // TODO Auto-generated method stub
} }
5:配置文件的权限:
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
posted on 2013-06-13 15:31 yujian_bcq 阅读(1201) 评论(0) 编辑 收藏 举报