Using author_can() on custom post types in WordPress

first about the add_role

you only need to run this once, so after you paste it in your functions.php and saved
you can remove it and save again and the role will be there always.

then about the author_can function, i really never use it so i can tell whats wrong but you can use current_user_can() function like this:

update

if ( is_user_logged_in() ) {
     //first you get the curent user info
     get_currentuserinfo();
     //then you can check capabilities like this
     if(current_user_can('display_map')){
      echo '<li><a href="#map">Map</a></li>';
      }
}

hope this helps