/**
   * 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");
        }
      }
    }
  }
 /**
  * removes the previous car overlay and replaces it with a new car overlay that represents the
  * users car at a specific geopoint
  *
  * @param point for geopoint of car
  * @author WWPowers 3-31-2010
  * @author ricky barrette
  */
 public void setCar(GeoPoint point) {
   isCarFound = false;
   hasLeftCar = false;
   mCarPoint = point;
   mCarOverlay = new FindMyCarOverlay(getActivity(), point);
   mMap.getMap().getOverlays().add(mCarOverlay);
   mMap.setDestination(mCarPoint);
 }
 /**
  * pans maps to where the a geopoint is, and if zoomIn is true, zooms in to level 20
  *
  * @param GeoPoint point - lat and lon of point to pan to
  * @param boolean zoomIn - true if map needs to be zoomed in
  * @return boolean false it geopoint is null
  * @author ricky barrette
  */
 public boolean panToGeoPoint(GeoPoint point, boolean zoomIn) {
   if (point != null) {
     if (mMap != null) {
       try {
         mMap.getMap().getController().setCenter(point);
       } catch (Exception e) {
         e.printStackTrace();
       }
       if (zoomIn) {
         mMap.getMap().getController().setZoom((mMap.getMap().getMaxZoomLevel() - 2));
       }
     } else {
       Log.e(TAG, "panToGeoPoint call. mapcontroller was null");
     }
   } else {
     Log.e(TAG, "panToGeoPoint call. geopoint was null");
     return false;
   }
   return true;
 }
  /**
   * removes the car overlay from the mapview.
   *
   * @return true if successful
   * @author ricky barrette
   */
  public boolean removeCar() {

    mCarPoint = null;
    mDistance.setText("0");
    mSettings.edit().remove(Settings.LAT).remove(Settings.LON).commit();
    mMap.setDestination(null);
    if (mListener != null) mListener.onCarDeleted();
    if (mDirections != null) {
      mDirections.removePath();
      mDirections = null;
    }

    try {
      mMap.getMap().getOverlays().remove(mCarOverlay);
    } catch (Exception e) {
      return false;
    }
    return true;
  }
 /**
  * changes the map mode
  *
  * @author ricky barrette
  */
 private void changeMapMode() {
   if (mMap.getMap() != null) mMap.getMap().setSatellite(!mMap.getMap().isSatellite());
 }