Geocoding an address with only zip code/postal and house number

6,065 views
Skip to first unread message

Johan Arensman

unread,
Sep 10, 2010, 8:34:16 AM9/10/10
to google-map...@googlegroups.com
Hello everyone,

We have a system that allows you to add addresses by only using a postal code and a house number in the Netherlands.

I got it working but it's not pretty and far from accurate because I'm using 3 geocode requests of which the first is impossible to do directly with the number.

1: geolocate postal + country such as "3267LP, The Netherlands"
2: reverse geolocate the coords from step 1 for the extra information such as street etc.
3: geolocate the extended address.

But if I use the postal code in the above example, I end up on the 'Gebrokendijk', I should be on 'Oude Nieuwlandsedijk'. This probably happens because the first geolocation is done without a house number and the 'center' or 'start' of this postal zone is closer to that street instead of the correct one? (no expert here). Is there any way to create a working geolocation with all the information i have (postal+housenumber+country) ?

Can you please tell me if there's another way to achieve this? I can't change the input, i only got postal + house number.

Here is my code, I've removed any code not related to the geolocation and added comments. I've also saved this snippet to jsbin: http://jsbin.com/ugota3/edit for some highlighting

try {
// test input:
var country = 'The Netherlands';
var postal = '3267LP';
var number = '7';

// 1: geocode postal and country:
var result = gc.geocode({address: postal+', '+country}, function(results, status) {
    if(status == google.maps.GeocoderStatus.OK) {
        // 2: reverse geocode the coordinates:
        gc.geocode({latLng: results[0].geometry.location}, function(results, status) {
            if(results[0]) {
                // get the correctly formatted address:
                var address = results[0].formatted_address;
                if(results[0].types[0] == 'street_address') {
                    address = results[0].address_components[1].long_name+' '+number+', '+postal+' '
                       +results[0].address_components[2].long_name+' '+results[0].address_components[5].long_name;
                } else if(results[0].types[0] == 'route') {
                    address = results[0].address_components[0].long_name+' '+number+', '+postal+' '
                       +results[0].address_components[1].long_name+' '+results[0].address_components[4].long_name;
                }
                // 3: geocode the exact address:
                gc.geocode({address: address}, function(results, status) {
                    if(results[0]) {
                        // create marker:
                        new google.maps.Marker({
                            map: map.map,
                            position: results[0].geometry.location,
                            icon: tinyIcon,
                            title: address
                        });
                        // show address
                        addressElement.update(address);
                    } else {
                        //alert("Geocode 3 was not successful for the following reason: " + status);
                        return false;
                    }
                });
            } else {
                //alert("Geocode 2 was not successful for the following reason: " + status);
                return false;
            }
        });
        map.setCenter(results[0].geometry.location);
        marker.setPosition(results[0].geometry.location);
    } else {
        //alert("Geocode was not successful for the following reason: " + status);
        return false;
    }
});
} catch(e) {
    console.error(e);
}
// end

I really hope you can help me make this script more accurate.
Have i missed something? Am I thinking wrong? Or are these the limits of the geocoder?

Greetings,
 Johan Arensman

Grok Lobster

unread,
Sep 10, 2010, 11:45:55 AM9/10/10
to Google Maps JavaScript API v3
It's a V2 example, but it seems to be reasonably accurate -
http://greg-koppel.site88.net/maps/CourseMapper.php

Perhaps you can convert it to V3.

On Sep 10, 5:34 am, Johan Arensman <johanm...@gmail.com> wrote:
> Hello everyone,
>
> We have a system that allows you to add addresses by only using a postal
> code and a house number in the Netherlands.
>
> I got it working but it's not pretty and far from accurate because I'm using
> 3 geocode requests of which the first is impossible to do directly with the
> number.
>
> 1: geolocate postal + country such as "3267LP, The Netherlands"
> 2: reverse geolocate the coords from step 1 for the extra information such
> as street etc.
> 3: geolocate the extended address.
>
> But if I use the postal code in the above example, I end up on the
> 'Gebrokendijk', I should be on 'Oude Nieuwlandsedijk'. This probably happens
> because the first geolocation is done without a house number and the
> 'center' or 'start' of this postal zone is closer to that street instead of
> the correct one? (no expert here). Is there any way to create a working
> geolocation with all the information i have (postal+housenumber+country) ?
>
> Can you please tell me if there's another way to achieve this? I can't
> change the input, i only got postal + house number.
>
> Here is my code, I've removed any code not related to the geolocation and
> added comments. I've also saved this snippet to jsbin:http://jsbin.com/ugota3/editfor some highlighting

Johan Arensman

unread,
Sep 11, 2010, 4:08:40 AM9/11/10
to google-map...@googlegroups.com
Hey Grok,

Thanks for your example but here it's also impossible to use a postal code + house number. You get unknown location when you do that. Is it even technically possible to get an exact address with only a postal and housenumber?

Greetings,
 Johan

--
You received this message because you are subscribed to the Google Groups "Google Maps JavaScript API v3" group.
To post to this group, send email to google-map...@googlegroups.com.
To unsubscribe from this group, send email to google-maps-js-a...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-maps-js-api-v3?hl=en.


Johan Arensman

unread,
Sep 13, 2010, 4:05:28 AM9/13/10
to google-map...@googlegroups.com
Hello all,

I have been experimenting with the code but I'm still unable to get an accurate result. Each address has an unique postal+house number so why can't I search for postal + house number with google maps?

Greetings,
 Johan

geoco...@gmail.com

unread,
Sep 13, 2010, 8:28:04 AM9/13/10
to Google Maps JavaScript API v3
On Sep 13, 1:05 am, Johan Arensman <johanm...@gmail.com> wrote:
> Hello all,
>
> I have been experimenting with the code but I'm still unable to get an
> accurate result. Each address has an unique postal+house number so why can't
> I search for postal + house number with google maps?

I don't think your use case it the main one for the geocoder.

http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding
Says this:
Geocoding
Geocoding is the process of converting addresses (like "1600
Amphitheatre Parkway, Mountain View, CA") into geographic coordinates
(like latitude 37.423021 and longitude -122.083739), which you can use
to place markers or position the map.

I'm not sure it can recognize a postcode + house number as an address.

-- Larry


>
> Greetings,
>  Johan
>
>
>
> On Fri, Sep 10, 2010 at 2:34 PM, Johan Arensman <johanm...@gmail.com> wrote:
> > Hello everyone,
>
> > We have a system that allows you to add addresses by only using a postal
> > code and a house number in the Netherlands.
>
> > I got it working but it's not pretty and far from accurate because I'm
> > using 3 geocode requests of which the first is impossible to do directly
> > with the number.
>
> > 1: geolocate postal + country such as "3267LP, The Netherlands"
> > 2: reverse geolocate the coords from step 1 for the extra information such
> > as street etc.
> > 3: geolocate the extended address.
>
> > But if I use the postal code in the above example, I end up on the
> > 'Gebrokendijk', I should be on 'Oude Nieuwlandsedijk'. This probably happens
> > because the first geolocation is done without a house number and the
> > 'center' or 'start' of this postal zone is closer to that street instead of
> > the correct one? (no expert here). Is there any way to create a working
> > geolocation with all the information i have (postal+housenumber+country) ?
>
> > Can you please tell me if there's another way to achieve this? I can't
> > change the input, i only got postal + house number.
>
> > Here is my code, I've removed any code not related to the geolocation and
> > added comments. I've also saved this snippet to jsbin:
> >http://jsbin.com/ugota3/editfor some highlighting
> >  Johan Arensman- Hide quoted text -
>
> - Show quoted text -
Reply all
Reply to author
Forward
0 new messages