Basemap methods like plot() include a "draw_if_interactive" command, followed by a call to the set_axes_limits() method, which ends with
# force draw if in interactive mode.
figManager = _pylab_helpers.Gcf.get_active()
It seems to me that you could eliminate all those "draw_if_interactive" blocks from plot etc., and replace the end block of set_axes_limits() with
import matplotlib.pyplot as plt
The advantages would be reduced clutter in the drawing methods, and consistent use of draw_if_interactive. I think the latter would make interactive running of functions and subclasses built on basemap more efficient by reducing redundant draw operations.
It also looks like at least most of the operations in set_axes_limits really need to be done only once (although I have not checked this carefully). Instead of repeating them with every call to a plotting method, the basemap instance could keep a list of hashes of axes objects on which the operations have already been run, and use that to prevent duplication.
Nothing urgent here--just some ideas that occur to me while working with basemap. If you think any are worth pursuing, and you want me to take a shot at it, let me know.