Hi, As discussed in my introduction thread[1], I'd like to propose for the Midgard MVC location library[2] to be contributed to the Zeta Components stack as a new components. As a first step, here are the initial requirements for a location library.
Introduction ============ The purpose of this library is to make it easier for PHP developers to work with geolocation. Geolocation is one of the emerging trends in web development, with new possibilities rising from browser geolocation support. This library focuses on dealing with actual real-world locations and relations between them, not with map visualization. Requirements ============ In the initial version the location library should only deal with geolocated points. To build full geoinformation systems there will be need for lines, connections and areas, but these can be added in later iterations of the library. The library should provide the following services: Spot ---- A spot is an actual location on a map. This consists of WGS-84 latitude and longitude. Optionally spots may have an altitude, timestamp, accuracy and a human-readable description. Spot should also be able to calculate distance and direction to other spots, and to provide a bounding box around them at a given radius. For display purposes spots also need to provide a way to convert them to pretty-printed human-readable coordinates. Geocoding --------- Geocoding is a service for converting human-readable locations to actual coordinates (spots). There should be an interface for geocoding utilizing various online geocoding services like GeoNames and OpenStreetMap Nominatim. Users of the component should be able to create their own geocoding service implementations. Reverse geocoding ----------------- Reverse geocoding is a service for converting actual coordinates (spots) into human-readable locations. There should be an interface for reverse geocoding utilizing various online geocoding services like GeoNames and OpenStreetMap Nominatim. Users of the component should be able to create their own reverse geocoding service implementations. IP geocoding ------------ IP geocoding is a service for converting an IP address to an approximate geographical location of the network. This can be used to locate users of a website for instance, in cases where browser geolocationing is not possible. The IP geocoding interface should be able to talk to at least HostIP web service to perform geocoding. 1: http://mail-archives.apache.org/mod_mbox/incubator-zeta-dev/201011.mbox/%3caanlkti=2j_vhbrmc3x55ekkjojwtuq-=9ddms0zvn...@mail.gmail.com%3e 2: https://github.com/bergie/midgardmvc_helper_location