• android获取经纬度和地方名称


    1. package com.liufeng.baidumap;  
    2.   
    3. import Android.os.Bundle;  
    4. import Android.view.View;  
    5. import Android.view.View.OnClickListener;  
    6. import Android.widget.Button;  
    7. import Android.widget.EditText;  
    8. import Android.widget.TextView;  
    9.   
    10. import com.baidu.mapapi.BMapManager;  
    11. import com.baidu.mapapi.GeoPoint;  
    12. import com.baidu.mapapi.MKAddrInfo;  
    13. import com.baidu.mapapi.MKDrivingRouteResult;  
    14. import com.baidu.mapapi.MKPoiInfo;  
    15. import com.baidu.mapapi.MKPoiResult;  
    16. import com.baidu.mapapi.MKSearch;  
    17. import com.baidu.mapapi.MKSearchListener;  
    18. import com.baidu.mapapi.MKTransitRouteResult;  
    19. import com.baidu.mapapi.MKWalkingRouteResult;  
    20. import com.baidu.mapapi.MapActivity;  
    21.   
    22. /** 
    23.  * 根据经纬度查询地址信息 
    24.  *  
    25.  * @author liufeng 
    26.  * @date 2011-05-03 
    27.  */  
    28. public class QueryAddressActivity extends MapActivity {  
    29.     // 定义地图引擎管理类   
    30.     private BMapManager mapManager;  
    31.     // 定义搜索服务类   
    32.     private MKSearch mMKSearch;  
    33.   
    34.     private EditText longitudeEditText;  
    35.     private EditText latitudeEditText;  
    36.     private TextView addressTextView;  
    37.     private Button queryButton;  
    38.   
    39.     @Override  
    40.     public void onCreate(Bundle savedInstanceState) {  
    41.         super.onCreate(savedInstanceState);  
    42.         setContentView(R.layout.query_address);  
    43.   
    44.         // 初始化MapActivity   
    45.         mapManager = new BMapManager(getApplication());  
    46.         // init方法的第一个参数需填入申请的API Key   
    47.         mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4"null);  
    48.         super.initMapActivity(mapManager);  
    49.   
    50.         // 初始化MKSearch   
    51.         mMKSearch = new MKSearch();  
    52.         mMKSearch.init(mapManager, new MySearchListener());  
    53.   
    54.         // 通过id查询在布局文件中定义的控件   
    55.         longitudeEditText = (EditText) findViewById(R.id.longitude_input);  
    56.         latitudeEditText = (EditText) findViewById(R.id.latitude_input);  
    57.         addressTextView = (TextView) findViewById(R.id.address_text);  
    58.         queryButton = (Button) findViewById(R.id.query_button);  
    59.   
    60.         // 给地址查询按钮设置单击事件监听器   
    61.         queryButton.setOnClickListener(new OnClickListener() {  
    62.             @Override  
    63.             public void onClick(View v) {  
    64.                 // 用户输入的经度值   
    65.                 String longitudeStr = longitudeEditText.getText().toString();  
    66.                 // 用户输入的纬度值   
    67.                 String latitudeStr = latitudeEditText.getText().toString();  
    68.   
    69.                 try {  
    70.                     // 将用户输入的经纬度值转换成int类型   
    71.                     int longitude = (int) (1000000 * Double.parseDouble(longitudeStr));  
    72.                     int latitude = (int) (1000000 * Double.parseDouble(latitudeStr));  
    73.   
    74.                     // 查询该经纬度值所对应的地址位置信息   
    75.                     mMKSearch.reverseGeocode(new GeoPoint(latitude, longitude));  
    76.                 } catch (Exception e) {  
    77.                     addressTextView.setText("查询出错,请检查您输入的经纬度值!");  
    78.                 }  
    79.             }  
    80.         });  
    81.     }  
    82.   
    83.     @Override  
    84.     protected boolean isRouteDisplayed() {  
    85.         return false;  
    86.     }  
    87.   
    88.     @Override  
    89.     protected void onDestroy() {  
    90.         if (mapManager != null) {  
    91.             // 程序退出前需调用此方法   
    92.             mapManager.destroy();  
    93.             mapManager = null;  
    94.         }  
    95.         super.onDestroy();  
    96.     }  
    97.   
    98.     @Override  
    99.     protected void onPause() {  
    100.         if (mapManager != null) {  
    101.             // 终止百度地图API   
    102.             mapManager.stop();  
    103.         }  
    104.         super.onPause();  
    105.     }  
    106.   
    107.     @Override  
    108.     protected void onResume() {  
    109.         if (mapManager != null) {  
    110.             // 开启百度地图API   
    111.             mapManager.start();  
    112.         }  
    113.         super.onResume();  
    114.     }  
    115.   
    116.     /** 
    117.      * 内部类实现MKSearchListener接口,用于实现异步搜索服务 
    118.      *  
    119.      * @author liufeng 
    120.      */  
    121.     public class MySearchListener implements MKSearchListener {  
    122.         /** 
    123.          * 根据经纬度搜索地址信息结果 
    124.          *  
    125.          * @param result 搜索结果 
    126.          * @param iError 错误号(0表示正确返回) 
    127.          */  
    128.         @Override  
    129.         public void onGetAddrResult(MKAddrInfo result, int iError) {  
    130.             if (result == null) {  
    131.                 return;  
    132.             }  
    133.             StringBuffer sb = new StringBuffer();  
    134.             // 经纬度所对应的位置   
    135.             sb.append(result.strAddr).append("/n");  
    136.   
    137.             // 判断该地址附近是否有POI(Point of Interest,即兴趣点)   
    138.             if (null != result.poiList) {  
    139.                 // 遍历所有的兴趣点信息   
    140.                 for (MKPoiInfo poiInfo : result.poiList) {  
    141.                     sb.append("----------------------------------------").append("/n");  
    142.                     sb.append("名称:").append(poiInfo.name).append("/n");  
    143.                     sb.append("地址:").append(poiInfo.address).append("/n");  
    144.                     sb.append("经度:").append(poiInfo.pt.getLongitudeE6() / 1000000.0f).append("/n");  
    145.                     sb.append("纬度:").append(poiInfo.pt.getLatitudeE6() / 1000000.0f).append("/n");  
    146.                     sb.append("电话:").append(poiInfo.phoneNum).append("/n");  
    147.                     sb.append("邮编:").append(poiInfo.postCode).append("/n");  
    148.                     // poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路   
    149.                     sb.append("类型:").append(poiInfo.ePoiType).append("/n");  
    150.                 }  
    151.             }  
    152.             // 将地址信息、兴趣点信息显示在TextView上   
    153.             addressTextView.setText(sb.toString());  
    154.         }  
    155.   
    156.         /** 
    157.          * 驾车路线搜索结果 
    158.          *  
    159.          * @param result 搜索结果 
    160.          * @param iError 错误号(0表示正确返回) 
    161.          */  
    162.         @Override  
    163.         public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) {  
    164.         }  
    165.   
    166.         /** 
    167.          * POI搜索结果(范围检索、城市POI检索、周边检索) 
    168.          *  
    169.          * @param result 搜索结果 
    170.          * @param type 返回结果类型(11,12,21:poi列表 7:城市列表) 
    171.          * @param iError 错误号(0表示正确返回) 
    172.          */  
    173.         @Override  
    174.         public void onGetPoiResult(MKPoiResult result, int type, int iError) {  
    175.         }  
    176.   
    177.         /** 
    178.          * 公交换乘路线搜索结果 
    179.          *  
    180.          * @param result 搜索结果 
    181.          * @param iError 错误号(0表示正确返回) 
    182.          */  
    183.         @Override  
    184.         public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {  
    185.         }  
    186.   
    187.         /** 
    188.          * 步行路线搜索结果 
    189.          *  
    190.          * @param result 搜索结果 
    191.          * @param iError 错误号(0表示正确返回) 
    192.          */  
    193.         @Override  
    194.         public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) {  
    195.         }  
    196.     }  
    197. }  

       3)AndroidManifest.xml中的配置     

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

  • 相关阅读:
    MINIBASE源代码阅读笔记之heapfile
    MINIBASE源代码阅读笔记之HFPage
    naive cube implementation in python
    C++中对已分配空间的指针调用一个类的构造函数
    作死自救日记——不小心修改linux下/etc/sudoers权限的解决办法
    TPC-H数据导入MySQL教程
    TeX Live & TeXstudio 安装手记
    Web开发入门知识小总结
    配置静态服务器和配置nfs
    数论们
  • 原文地址:https://www.cnblogs.com/caishuowen/p/2287669.html
Copyright © 2020-2023  润新知