`
huobengluantiao8
  • 浏览: 1029329 次
文章分类
社区版块
存档分类
最新评论

百度map android获取经纬度和地方名称

 
阅读更多
  1. packagecom.liufeng.baidumap;
  2. importAndroid.os.Bundle;
  3. importAndroid.view.View;
  4. importAndroid.view.View.OnClickListener;
  5. importAndroid.widget.Button;
  6. importAndroid.widget.EditText;
  7. importAndroid.widget.TextView;
  8. importcom.baidu.mapapi.BMapManager;
  9. importcom.baidu.mapapi.GeoPoint;
  10. importcom.baidu.mapapi.MKAddrInfo;
  11. importcom.baidu.mapapi.MKDrivingRouteResult;
  12. importcom.baidu.mapapi.MKPoiInfo;
  13. importcom.baidu.mapapi.MKPoiResult;
  14. importcom.baidu.mapapi.MKSearch;
  15. importcom.baidu.mapapi.MKSearchListener;
  16. importcom.baidu.mapapi.MKTransitRouteResult;
  17. importcom.baidu.mapapi.MKWalkingRouteResult;
  18. importcom.baidu.mapapi.MapActivity;
  19. /**
  20. *根据经纬度查询地址信息
  21. *
  22. *@authorliufeng
  23. *@date2011-05-03
  24. */
  25. publicclassQueryAddressActivityextendsMapActivity{
  26. //定义地图引擎管理类
  27. privateBMapManagermapManager;
  28. //定义搜索服务类
  29. privateMKSearchmMKSearch;
  30. privateEditTextlongitudeEditText;
  31. privateEditTextlatitudeEditText;
  32. privateTextViewaddressTextView;
  33. privateButtonqueryButton;
  34. @Override
  35. publicvoidonCreate(BundlesavedInstanceState){
  36. super.onCreate(savedInstanceState);
  37. setContentView(R.layout.query_address);
  38. //初始化MapActivity
  39. mapManager=newBMapManager(getApplication());
  40. //init方法的第一个参数需填入申请的APIKey
  41. mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4",null);
  42. super.initMapActivity(mapManager);
  43. //初始化MKSearch
  44. mMKSearch=newMKSearch();
  45. mMKSearch.init(mapManager,newMySearchListener());
  46. //通过id查询在布局文件中定义的控件
  47. longitudeEditText=(EditText)findViewById(R.id.longitude_input);
  48. latitudeEditText=(EditText)findViewById(R.id.latitude_input);
  49. addressTextView=(TextView)findViewById(R.id.address_text);
  50. queryButton=(Button)findViewById(R.id.query_button);
  51. //给地址查询按钮设置单击事件监听器
  52. queryButton.setOnClickListener(newOnClickListener(){
  53. @Override
  54. publicvoidonClick(Viewv){
  55. //用户输入的经度值
  56. StringlongitudeStr=longitudeEditText.getText().toString();
  57. //用户输入的纬度值
  58. StringlatitudeStr=latitudeEditText.getText().toString();
  59. try{
  60. //将用户输入的经纬度值转换成int类型
  61. intlongitude=(int)(1000000*Double.parseDouble(longitudeStr));
  62. intlatitude=(int)(1000000*Double.parseDouble(latitudeStr));
  63. //查询该经纬度值所对应的地址位置信息
  64. mMKSearch.reverseGeocode(newGeoPoint(latitude,longitude));
  65. }catch(Exceptione){
  66. addressTextView.setText("查询出错,请检查您输入的经纬度值!");
  67. }
  68. }
  69. });
  70. }
  71. @Override
  72. protectedbooleanisRouteDisplayed(){
  73. returnfalse;
  74. }
  75. @Override
  76. protectedvoidonDestroy(){
  77. if(mapManager!=null){
  78. //程序退出前需调用此方法
  79. mapManager.destroy();
  80. mapManager=null;
  81. }
  82. super.onDestroy();
  83. }
  84. @Override
  85. protectedvoidonPause(){
  86. if(mapManager!=null){
  87. //终止百度地图API
  88. mapManager.stop();
  89. }
  90. super.onPause();
  91. }
  92. @Override
  93. protectedvoidonResume(){
  94. if(mapManager!=null){
  95. //开启百度地图API
  96. mapManager.start();
  97. }
  98. super.onResume();
  99. }
  100. /**
  101. *内部类实现MKSearchListener接口,用于实现异步搜索服务
  102. *
  103. *@authorliufeng
  104. */
  105. publicclassMySearchListenerimplementsMKSearchListener{
  106. /**
  107. *根据经纬度搜索地址信息结果
  108. *
  109. *@paramresult搜索结果
  110. *@paramiError错误号(0表示正确返回)
  111. */
  112. @Override
  113. publicvoidonGetAddrResult(MKAddrInforesult,intiError){
  114. if(result==null){
  115. return;
  116. }
  117. StringBuffersb=newStringBuffer();
  118. //经纬度所对应的位置
  119. sb.append(result.strAddr).append("/n");
  120. //判断该地址附近是否有POI(PointofInterest,即兴趣点)
  121. if(null!=result.poiList){
  122. //遍历所有的兴趣点信息
  123. for(MKPoiInfopoiInfo:result.poiList){
  124. sb.append("----------------------------------------").append("/n");
  125. sb.append("名称:").append(poiInfo.name).append("/n");
  126. sb.append("地址:").append(poiInfo.address).append("/n");
  127. sb.append("经度:").append(poiInfo.pt.getLongitudeE6()/1000000.0f).append("/n");
  128. sb.append("纬度:").append(poiInfo.pt.getLatitudeE6()/1000000.0f).append("/n");
  129. sb.append("电话:").append(poiInfo.phoneNum).append("/n");
  130. sb.append("邮编:").append(poiInfo.postCode).append("/n");
  131. //poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路
  132. sb.append("类型:").append(poiInfo.ePoiType).append("/n");
  133. }
  134. }
  135. //将地址信息、兴趣点信息显示在TextView上
  136. addressTextView.setText(sb.toString());
  137. }
  138. /**
  139. *驾车路线搜索结果
  140. *
  141. *@paramresult搜索结果
  142. *@paramiError错误号(0表示正确返回)
  143. */
  144. @Override
  145. publicvoidonGetDrivingRouteResult(MKDrivingRouteResultresult,intiError){
  146. }
  147. /**
  148. *POI搜索结果(范围检索、城市POI检索、周边检索)
  149. *
  150. *@paramresult搜索结果
  151. *@paramtype返回结果类型(11,12,21:poi列表7:城市列表)
  152. *@paramiError错误号(0表示正确返回)
  153. */
  154. @Override
  155. publicvoidonGetPoiResult(MKPoiResultresult,inttype,intiError){
  156. }
  157. /**
  158. *公交换乘路线搜索结果
  159. *
  160. *@paramresult搜索结果
  161. *@paramiError错误号(0表示正确返回)
  162. */
  163. @Override
  164. publicvoidonGetTransitRouteResult(MKTransitRouteResultresult,intiError){
  165. }
  166. /**
  167. *步行路线搜索结果
  168. *
  169. *@paramresult搜索结果
  170. *@paramiError错误号(0表示正确返回)
  171. */
  172. @Override
  173. publicvoidonGetWalkingRouteResult(MKWalkingRouteResultresult,intiError){
  174. }
  175. }
  176. }

3)AndroidManifest.xml中的配置

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:Android="http://schemas.android.com/apk/res/android"
  3. package="com.liufeng.baidumap"
  4. Android:versionCode="1"
  5. Android:versionName="1.0">
  6. <applicationAndroid:icon="@drawable/icon"android:label="@string/app_name">
  7. <activityAndroid:name=".QueryAddressActivity"android:label="@string/app_name">
  8. <intent-filter>
  9. <actionAndroid:name="android.intent.action.MAIN"/>
  10. <categoryAndroid:name="android.intent.category.LAUNCHER"/>
  11. </intent-filter>
  12. </activity>
  13. </application>
  14. <uses-sdkAndroid:minSdkVersion="4"/>
  15. <!--访问网络的权限-->
  16. <uses-permissionAndroid:name="android.permission.INTERNET"/>
  17. <!--访问精确位置的权限-->
  18. <uses-permissionAndroid:name="android.permission.ACCESS_FINE_LOCATION"/>
  19. <!--访问网络状态的权限-->
  20. <uses-permissionAndroid:name="android.permission.ACCESS_NETWORK_STATE"/>
  21. <!--访问WIFI网络状态的权限-->
  22. <uses-permissionAndroid:name="android.permission.ACCESS_WIFI_STATE"/>
  23. <!--改变WIFI网络状态的权限-->
  24. <uses-permissionAndroid:name="android.permission.CHANGE_WIFI_STATE"/>
  25. <!--读写存储卡的权限-->
  26. <uses-permissionAndroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  27. <!--读取电话状态的权限-->
  28. <uses-permissionAndroid:name="android.permission.READ_PHONE_STATE"/>
  29. </manifest>

locationManager = (LocationManager) GPSTestActivity.this.getSystemService(Context.LOCATION_SERVICE);

String provier = LocationManager.GPS_PROVIDER; location = locationManager.getLastKnownLocation(provier);

if (location == null) { Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setAltitudeRequired(false);

criteria.setBearingRequired(false);

criteria.setCostAllowed(false);

criteria.setPowerRequirement(Criteria.POWER_LOW);

provier = locationManager.getBestProvider(criteria, true);

location = locationManager.getLastKnownLocation(provier); }


自 http://www.cnblogs.com/caishuowen/archive/2011/12/14/2287669.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics