Many thanks to bplus — the implementation was relatively painless. Not quite as clean as I'd like it but it's a good start. Rather than trying to clean up the map outlines I'll try for a better map and see how that goes.
Once again, thanks for all your help.