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编辑  收藏  举报

导航