Just knocked up this address module and thought I'd throw it up here in case it may help someone else. The only complicated part was extracting and normalising the data from the freely available PDF lists of Australian post codes. But since it's only Australia, that's probably the least useful part to the community. It is only suburb, state and postcode. I don't have data for street names and numbers and they are ever changing anyway (Google Maps is several years out of date), so I probably wouldn't implement it to that level anyway.
I made this to be used as a pop up window on touch screen Windows tablets. I wanted to reduce reliance on the onscreen keyboard as much as possible, hence the alphabet button bars. Works great where I am as there's not many suburbs beginning with any one letter and I don't have to type a second (but have the option if I need it). The free text filter field only works on the Suburbs, use the radio buttons for the states. I will almost never know the postcode so didn't bother filtering that field (but you could add it if you want).
I opted to use just simple finds on a list view for this rather than the more complicated route of dynamic portal filtering. It does what it needs to without the added complexity. A single simple script does all the filtering (actually finding). I use a set field step to set gState to "" in the script that calls this pop up window, hence there is no way to "show all" states once one is selected. You could add one but since it's sole purpose is to get to one address in one state so there isn't really a need to "show all".
The green arrow button doesn't have any script attached to it, you will need to do your own to set a field in your actual record with the contents of Address :: ID. You'll also need to make a relationship between Address :: ID and the corresponding field in your record. Use the related fields State::State_Short (or State_Long), Suburb::Suburb and PostCode::PostCode to display data based on the Address::ID relationship.
Anyway, hope it's useful to someone.