@Override
    public void onReceiveLocation(BDLocation location) {
      // BDLocation类封装了定位sdk的定位结果
      // Receive Location
      StringBuffer sb = new StringBuffer(256);
      sb.append("time : ");
      sb.append(location.getTime());
      sb.append("\nerror code : ");
      sb.append(location.getLocType());
      sb.append("\nlatitude : ");
      sb.append(location.getLatitude());
      sb.append("\nlontitude : ");
      sb.append(location.getLongitude());
      sb.append("\nradius : ");
      sb.append(location.getRadius());
      if (location.getLocType() == BDLocation.TypeGpsLocation) { // GPS定位结果
        sb.append("\nspeed : ");
        sb.append(location.getSpeed()); // 单位:公里每小时
        sb.append("\nsatellite : ");
        sb.append(location.getSatelliteNumber());
        sb.append("\nheight : ");
        sb.append(location.getAltitude()); // 单位:米
        sb.append("\ndirection : ");
        sb.append(location.getDirection()); // 单位度
        sb.append("\naddr : ");
        sb.append(location.getAddrStr());
        sb.append("\ndescribe : ");
        sb.append("gps定位成功");

      } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) { // 网络定位结果
        sb.append("\naddr : ");
        sb.append(location.getAddrStr());
        // 运营商信息
        sb.append("\noperationers : ");
        sb.append(location.getOperators());
        sb.append("\ndescribe : ");
        sb.append("网络定位成功");
      } else if (location.getLocType() == BDLocation.TypeOffLineLocation) { // 离线定位结果
        sb.append("\ndescribe : ");
        sb.append("离线定位成功,离线定位结果也是有效的");
      } else if (location.getLocType() == BDLocation.TypeServerError) {
        sb.append("\ndescribe : ");
        sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到[email protected],会有人追查原因");
      } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
        sb.append("\ndescribe : ");
        sb.append("网络不同导致定位失败,请检查网络是否通畅");
      } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
        sb.append("\ndescribe : ");
        sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
      }
      sb.append("\nlocationdescribe : ");
      sb.append(location.getLocationDescribe()); // 位置语义化信息
      List<Poi> list = location.getPoiList(); // POI数据
      if (list != null) {
        sb.append("\npoilist size = : ");
        sb.append(list.size());
        for (Poi p : list) {
          sb.append("\npoi= : ");
          sb.append(p.getId() + " " + p.getName() + " " + p.getRank());
        }
      }
      LogUtil.i(sb.toString());

      Location myLocation = new Location();
      myLocation.setLongitude(location.getLongitude());
      myLocation.setLatitude(location.getLatitude());
      myLocation.setAddress(location.getAddrStr());
      myLocation.setAddressDes(location.getLocationDescribe());
      mLocationListener.onReceiveLocation(myLocation);
    }
  @Override
  public void onEventMainThread(ClientEvent event) {
    int type = event.getType();
    switch (type) {
      case AppEventName.LOCATION_SUCCESS:
        BDLocation location = BDLoactionMgr.getInstance().getBdLocation();
        if (location != null) {
          StringBuffer sb = new StringBuffer(256);
          sb.append("time : ");
          sb.append(location.getTime());
          sb.append("\nerror code : ");
          sb.append(location.getLocType());
          sb.append("\nlatitude : ");
          sb.append(location.getLatitude());
          sb.append("\nlongitude : ");
          sb.append(location.getLongitude());
          sb.append("\nradius : ");
          sb.append(location.getRadius());
          sb.append("\ncountry :");
          sb.append(location.getCountry());
          sb.append("\nprovince :");
          sb.append(location.getProvince());
          sb.append("\ncity :");
          sb.append(location.getCity());

          if (location.getLocType() == BDLocation.TypeGpsLocation) { // GPS定位结果
            sb.append("\nspeed : ");
            sb.append(location.getSpeed()); // 单位:公里每小时
            sb.append("\nsatellite : ");
            sb.append(location.getSatelliteNumber());
            sb.append("\nheight : ");
            sb.append(location.getAltitude()); // 单位:米
            sb.append("\ndirection : ");
            sb.append(location.getDirection());
            sb.append("\naddr : ");
            sb.append(location.getAddrStr());
            sb.append("\ndescribe : ");
            sb.append("gps定位成功");

          } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) { // 网络定位结果
            sb.append("\naddr : ");
            sb.append(location.getAddrStr());
            // 运营商信息
            sb.append("\noperationers : ");
            sb.append(location.getOperators());
            sb.append("\ndescribe : ");
            sb.append("网络定位成功");
          } else if (location.getLocType() == BDLocation.TypeOffLineLocation) { // 离线定位结果
            sb.append("\ndescribe : ");
            sb.append("离线定位成功,离线定位结果也是有效的");
          } else if (location.getLocType() == BDLocation.TypeServerError) {
            sb.append("\ndescribe : ");
            sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到[email protected],会有人追查原因");
          } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
            sb.append("\ndescribe : ");
            sb.append("网络不同导致定位失败,请检查网络是否通畅");
          } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
            sb.append("\ndescribe : ");
            sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
          }
          sb.append("\nlocationdescribe : "); // 位置语义化信息
          sb.append(location.getLocationDescribe());
          List<Poi> list = location.getPoiList(); // POI信息
          if (list != null) {
            sb.append("\npoilist size = : ");
            sb.append(list.size());
            for (Poi p : list) {
              sb.append("\npoi= : ");
              sb.append(p.getId() + " " + p.getName() + " " + p.getRank());
            }
          }
          tvMsg.setText(
              getResources().getText(R.string.act_bdlocation_tvMsg).toString() + sb.toString());
        }
        break;
    }
  }