def match(cls, responses, targets) -> float:
        """Return a score based on how far two targets are away from each other,
        where each field is a dict with the following schema:
        {
            country: str,
            province_or_state: str,
            municipality: str
        }
        """
        try:
            guess_coords = location_to_coords(**responses)
        except:
            return 0

        if guess_coords is None:
            error_logger.error(
                f"GeoProximityLocationDict: could not load co-ordinates for {responses=}"
            )
            return 0
        actual_coords = location_to_coords(**targets)
        if actual_coords is None:
            error_logger.error(
                f"GeoProximityLocationDict: could not load co-ordinates for {targets=}"
            )
            return 0

        return calculate_proximity_score(guess_coords, actual_coords)
Return a score based on how far two targets are away from each other,
        where each field is a dict with the following schema:
        {
            country: str,
            province_or_state: str,
            municipality: str
        }
        
vlmeval/dataset/utils/megabench/scoring/geo_proximity.py