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

Reply via email to