Google Maps Placemark
This post has been sitting for quite a while now, pending me having time to sit down and write some text to go alongside the code. It would appear that I now have the time to write it up.
Back when I was writing my Google Maps property finder I was using Google's Geocoding API to get a set of co-ordinates based on a search string.
Specifically I was using the getLocations method of the GClientGeocoder object.
This would return a number of Placemark objects with a bunch of information about the potential matches.
They don't really document this object, but to be honest they don't really need to, below is an example Placemark expressed in JSON-ish notation.
{ "id": "p1",
"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"AddressDetails": {
"Country": {
"CountryNameCode": "US",
"AdministrativeArea": {
"AdministrativeAreaName": "CA",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "Santa Clara",
"Locality": {
"LocalityName": "Mountain View",
"Thoroughfare": {
"ThoroughfareName": "1600 Amphitheatre Pkwy"},
"PostalCode": {
"PostalCodeNumber": "94043"
}
}
}
}
},
"Accuracy": 8
},
"Point": {
"coordinates": [-122.081783,37.423111,0]
}
}
The only thing is, if you want to get a specific element, the tree will not necessarily be the same each time, so traversal is a pain. The code below will condense all this into the root level of an object, so you can pick out the key/value pairs you want, and easily tell if some aren't there.
var Placemark = thistraverseplacemark; for var key in item if key == 'prototype' continue; iftypeofitemkey != 'object' thiskey = itemkey; else thistraverseitemkey;
One thing to note is that this was written for to use the Mootools class system, though it shouldn't be very hard to remove this dependancy.
Labels: javascript, programming, web
