I think I know the explananiton now - I am sure it's Apple's own geocoder API/service which apparently does not understand our Australian street numbers. We have a lot of buildings with numbers like "20-26"
When you tap on an address in Contacts it seems that Apple's geocoder called and it's unable to parse street numbers with a dash correctly. When you tap search in Maps it's Google's geocoder called and it recognises the address correctly.
If I enter the same address in Contacts without the second number the pin will be placed at almost correct position. Apple's geocoder places the pin somewhere at the street when Google's places the pin right in the center of the building.
Hopefully Apple will improve its geocoder because right now it is much worse than Google's
http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/ LocationAwarenessPG/UsingGeocoders/UsingGeocoders.html
In iOS 5.0 and later, you use the
CLGeocoder
class to initiate forward-geocoding requests using either a dictionary of Address Book information or a simple string. There is no designated format for string-based requests; delimiter characters are welcome, but not required, and the geocoder server treats the string as case-insensitive. Therefore, any of the following strings would yield results:
- "Apple Inc”
- "1 Infinite Loop”
- "1 Infinite Loop, Cupertino, CA USA”
The more information you can provide to the forward geocoder, the better the results returned to you. The geocoder object parses the information you give it and, if it finds a match, returns some number of placemark objects. The number of returned placemark objects depends greatly on the specificity of the information provided. Thus, providing street, city, province, and country information is much more likely to return a single address than just street and city information.