This Where 2.0 video is a must, for all of you GIS users, managers and GIS-evangelists. (you can also read and view it in those links: at Chris Spagnuolo's post or at James Fee's post)
I've also recommend reading Dave's post (this post inspired by him) and I agreed with him about the GIS-buzz that will give benefits for everyone.
From now on, you can take your blog\home\web-site\news-reader geographic information and put it on a maps, I am not sure what is the benefit, but you can do this. Who is going to use it or watch it?! Instead, try thinking about an already-exists-application that handle deliveries between warehouses and try to locate its trucks and warehouses on a map, such idea will probably have more users. It will be more complicated cause this objects don't have a GIS metadata and it is also not so easy to give them those details, for example: the DB is already created without X and Y parameters, there is no country\place indicator in the warehouse field. moreover, we want to have a geo-processing utility which retrieve the shortest-path between those warehouses (in Israel roads, which have their own Business Logic - such as: different spatial reference, new roads, traffic-jams etc.) For such operation we will probably need a GIS expert to create all those services for the end-user mash-up. after everything will be ready, we could simply mash-it-up together.
The main problem that the experts (those who will create the services) are looking for something more accurate, while the mash-up users are looking for a simple Geo-Knowledgeless API.
For example, The Google API looks like this:
new GLatLng(34.019968,-118.289988);
It actually looks enough for most users and application, but for the GIS-experts it looks ridiculous. For those who still didn't understand what I mean, it is the same like saying "I am just 10 xxx from you house" - so 10 what? is it meters, is it kilometers or maybe you are talking about minutes ...
Here is a better approach for a point(*).
public class Point : Geometry, IPoint, IGeometry, ICloneable, IComparable, IComparable<IGeometry>, IEquatable<IGeometry> { public Point(ICoordinate coordinate); public Point(double x, double y); public Point(ICoordinateSequence coordinates, IGeometryFactory factory); public Point(double x, double y, double z); public override IGeometry Boundary { get; } public override Dimensions BoundaryDimension { get; } public override ICoordinate Coordinate { get; } public override ICoordinate[] Coordinates { get; } public ICoordinateSequence CoordinateSequence { get; } public override Dimensions Dimension { get; } public override string GeometryType { get; } public override bool IsEmpty { get; } public override bool IsSimple { get; } public override bool IsValid { get; } public override int NumPoints { get; } public double X { get; set; } public double Y { get; set; } public double Z { get; set; } }
The default Lat,Long lack the coordinate system. We can see (in the second sample for point) the ICoordinate. you can also have Z parameter. Pay attention to the Point Constructor with only (double x, double y) as parameter, this is pretty much the same as the GLatLng object. which probably use the WGS84 as its default.
I am not sure what Google are trying to achieve, if we are looking for the home (Internet) users - it will probably be enough, but still not sure how they are going to convert Ed50 data (such as: Israeli\Europe roads data) to WGS84 usage. for such operations I think they must add more options to their Geographic objects.
Simplicity note: The thing I like the most is the simplicity in configuring a new point, which probably is a must for an humble-users. you should try this in your application\services. In such object (GLatLng) the user should know nothing but the service must be more sophisticated.
(*) The Point class was taken from the SharpMap Api.
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.