Revision history for Perl extension Geo::Google.
0.01 Mon May 23 22:05:45 2005
- original version; created by h2xs 1.23 with options
-Xn Geo::Google
0.03 Sun Jan 7 10:21:00 2007
- Google switched their Maps server response from XML
to JSON. Changed the Geo::Google response parsing
from XML to google's JSON data structure.
- changed the toString() functions of these objects to
toXML() functions:
Geo::Google::Location
Geo::Google::Segment
Geo::Google::Path
- Added a toJSON() function to these objects:
Geo::Google::Location
Geo::Google::Path
- Added private function _JSONRenderSkeleton() to support
the new toJSON() functions of location and path objects
- Simplified control loops for directions segment parsing
- Added support for waypoints in directions queries and
Geo::Google::Path objects
- Updated the test script
- Added the levels() and panel() methods of the
Geo::Google::Path object to allow JSON rendering that
should be interchangeable with Google Maps' JSON response
- Added a locations() method of the Geo::Google::Path
object, allowing you to access any array of all
locations used in the directions query after it has
been executed
- Expanded error handling to include more checks during the
query process, added new error messages, and re-wrote
some existing error messages for clarity
- Added detailed test failure reporting to t/Geo-Google.t
20070226:0213:MAT
Partial fix of a bug in extraction and correlation of
driving directions steps.
20070227:0516:MAT
-Completed fix of Path segments bug reported by
Thomas Delaet and Pieter-Jan Speelmans
-Added code to automatically accept suggested changes
to google maps queries in the Geo::Google->path()
function.
-Adjusted path object to include start, stop and all
waypoints as segments
-Revised test script to reflect new path data structure
20070301:0458:MAT
-Cleaned up suggestion acceptor in Geo::Google->path()
-Based parsing on a style tag instead of English text
-Replaced parsing for html segment descriptions with
a description constructor for waypoints only
20070302:1422:MAT
-Removed waypoint html segment description contstructor.
Replaced it with the official Google title of the
location from from the Geo::Google::Location object
for the waypoint.
20070304:1751:MAT
-Fixed parsing bug that caused directions with no waypoints
to miss all directions steps, returning only the
start and stop points.
Special thanks to Pieter Agten <pi8 at pi.be>
for zeroing in on the problem line and sending a
patch.
-Added 14 new tests to verify that directions with no
waypoints (from: to:) parse correctly.
20070308:0626:MAT
-re-tooled driving directions parsing and adjusted structure
of the path object slightly to comply with Google's
latest changes to the JSON data. Added a second
polyline (because google switched to one polyline per
subpath)
-Thanks to Pieter Agten for spotting this and sending
in a bug report
0.04-rc1 : 9 April 2007 : MAT
-Fixed broken distance and time parsing
-Re-wrote and added extensive commenting to the polyline decoding
- now it works on 64-bit perl as well
-Adjusted HTML segment to polyline points synchronization loops
to account for the new polyline decoding algorithm
0.04-rc2 : MAT : adjusted for slightly different point lat/longs in test script
0.04-rc3 : MAT
- This version requires perl JSON module 1.11 patched with Allen Day's
JSON/Parser.pm patch. Recently added JSON from Google Maps broke
the JSON parser. The Allen Day patch makes it more flexible for
quote handling.
- Adjusted the _obj2location() function because Google changed their
JSON data structure for locations (address lines specifically).
0.04-rc4: MAT
- Rewrote _encode() for 64 bit CPU compatibility
- Wrote _encode_word() function used by new version of _encode()
- Fixed Geo::Google::Path->toXML() function (have not tested for KML file
compatibility).
- Added static unit tests for:
_encode_word()
_encode()
_decode_word()
_decode()
_decode() to _encode() and comparison of output against input
- Added a dynamic unit test that tests both _decode() and _encode() against
the actual Google polyline string
- Adjusted the correlation algorithm for HTML extracted directions segments and
points extracted from the polyline strings. We now use search locations for
points wherever possible.
- To make this possible, I adjusted precision of lat/long coords for
Geo::Google::Locations that are used as path search parameters. They come
from Google with millionth degree precision, but polyline points only have
hundred-thousandth degree precision.
- Points to HTML correlation is spot on for point-to-point directions, but off
for point-to-point-to-point directions (waypoints). Will fix this when I
restructure the API for Path->Subpath->Segment directions structure.
- Adjusted directions parsing to accommodate Google's naming convention change
for driving segments. It was 'dirsegment_\d+_\d+', but now it's
'panel_\d+_\d+'.
0.04-rc5 (MAT)
- Modified the location() constructor method of of the Geo::Google object to
allow it to return Geo::Gooogle::Location objects when Google can't resolve
the address you provide but suggests alternate addresses that it can
resolve. It returns these alternate address in the same array of
Geo::Google::Location objects that it normally returns. They are ordered
in the same order Google presents them.
- Added unit tests for handling of suggested alternate addresses in the
location() constructor method of the Geo::Google object.
0.04-rc5 (MAT)
- Modified Makefile.PL to require JSON version 1.12 or greater (1.11 and
earlier don't handle mixes of ' and " as key and field delimiters)
0.04-rc6 (MAT)
- Adjusted parsing to compensate for a in change Google's JSON reponse
structure and UTF escaping.
- Minor code beautification
- Adjusted test script to match slight changes in Google's data
- Test script now prints specific error messages when it fails some tests
0.05-rc1 (MAT)
- Updated total directions length parsing to reflect Google's recent
display format change
- Re-wrote test script to only test lat/long of Geo::Google::Location objects
that don't come from a polyline to the nearest hundred-thousandth of a
degree. In most cases, this difference is a matter of inches on the ground.
- Should prevent needless test script changes every time Google gets
a database update from Navteq