/**
   * computes a geopoint the is the central geopoint between the user and the car. also it zooms so
   * both marks are visible on the map
   *
   * @author ricky barrette
   */
  protected void showBoth() {
    if (mMap != null) {
      if (mCarPoint == null) {
        Toast.makeText(getActivity(), R.string.mark_car_first, Toast.LENGTH_LONG).show();
      } else if (mMap.getUserLocation() == null) {
        Toast.makeText(getActivity(), R.string.no_gps_signal, Toast.LENGTH_LONG).show();
      } else {
        if (mMap.getMap() != null) {
          mMap.getMap().getController().stopAnimation(false);
          mMap.followUser(false);
          final GeoPoint user = mMap.getUserLocation();

          /*
           * here we null check our next set of value before we send
           * them off to geoutils if they have became null for some
           * reason we disable show both mode
           */
          if (mCarPoint != null && user != null) {
            new Thread(
                    new Runnable() {
                      @Override
                      public void run() {
                        mHandler.sendMessage(
                            mHandler.obtainMessage(MIDPOINT, GeoUtils.midPoint(mCarPoint, user)));
                      }
                    })
                .start();
          }

        } else {
          Log.e(TAG, "showBoth.mMap.getMap() is null");
        }
      }
    }
  }
  /**
   * Trys to pan the map to the users location
   *
   * @author ricky barrette
   * @return true if successfull
   */
  private boolean myLocation() {
    mMap.followUser(true);

    /*
     * if we have a gps signal, then pan to user location else notify user
     * that there is no GPS signal
     *
     * we switch from MyLocationOverlay.getMyLocation() to referencing the
     * static variable MyCustomLocationOverlay.gpUser because for some
     * reason getMyLocation() would become null.
     *
     * @author ricky barrette
     */
    if (!panToGeoPoint(mMap.getUserLocation(), true)) {
      Toast.makeText(getActivity(), R.string.no_gps_signal, Toast.LENGTH_LONG).show();
      return false;
    } else return true;
  }
  /**
   * Marks the user's location
   *
   * @author ricky barrette
   */
  private void markMyLocation() {
    mMap.followUser(true);

    /*
     * if we have a gps signal, then pan to user location and then if there
     * is no car, mark the car location as the users location else show mark
     * car dialog
     *
     * we switch from MyLocationOverlay.getMyLocation() to referencing the
     * static variable MyCustomLocationOverlay.gpUser because for some
     * reason getMyLocation() would become null.
     *
     * @author ricky barrette
     */
    if (myLocation())
      if (mCarPoint != null) markCarDialog();
      else markCar();
  }