I need to develop a location based extension to an existing app that will allow users to see all other users that are around them (within a fixed aerial distance). The existing app was developed using Axis (Web services) + Spring + Hibernate + MySQL.
Requirements are:
- Java framework (preferably open-source unless commercial solution offers big advantages). Integration with Hibernate, Spring, etc. preferred.
- User needs to update his/her location on set periods of time using standard API (i.e. SOAP or REST)
- User need to be able to update location by either sending latitude and longitude or a US address.
- Possibly use cell-tower and/or wifi data for some devices if GPS not available.
- There is no need to have walking or driving directions. There is no need to have driving or walking distance, just approximate aerial distance.
- Users of the app keep on moving (sales-people) and update their location in set periods of time (every ~15 min.)
- Project might change in the future to handle other Points of interest (i.e. warehouse locations, clients' locations), but those will likely be in fixed physical positions (vs. users that keep on moving).
- Performance of retrieving users around a specific user is essential; therefore will prefer an in-memory map (and not a database query).
- At this point there is no need to render a map. That might change though.
I have heard or saw the following terms and frameworks and I am not sure what do they mean and which one of them to use:
- ESRI
- Shapefiles
- GeoServer
- GeoTools
- PostGIS
I will really appreciate a brief overview of the steps I need to take to develop such a project, whether and how to use the above tools, which data (i.e. GPS, Wifi, Cell-towers) is freely available and which do we need to pay.
References to some tutorials or books will be greatly appreciated.
Thank you!