def get_nearest_forecast_site(self, latitude=None,  longitude=None):
        """
        This function returns the nearest Site object to the specified
        coordinates.
        """
        if longitude is None:
            print('ERROR: No latitude given.')
            return False

        if latitude is None:
            print('ERROR: No latitude given.')
            return False

        nearest = False
        distance = None
        sites = self.get_forecast_sites()
        # Sometimes there is a TypeError exception here: sites is None
        # So, sometimes self.get_all_sites() has returned None.
        for site in sites:
            new_distance = \
                self._distance_between_coords(
                    float(site.longitude),
                    float(site.latitude),
                    float(longitude),
                    float(latitude))

            if ((distance == None) or (new_distance < distance)):
                distance = new_distance
                nearest = site

        # If the nearest site is more than 30km away, raise an error

        if distance > 30:
            raise APIException("There is no site within 30km.")

        return nearest