I’ve started to create a website where it’s users are effectively tracked (they know they are being tracked). Users will walk a particular route (around Manchester, UK. to be more precise) of which there are 10 checkpoints. A checkpoint is a static position on the map. Using the Google Maps API I know that I can plot a position on a map i.e. a checkpoint. I am also storing the time at which a user reaches said checkpoint. Taking the distance between checkpoints I am then able to calculate their average speed using basic math.
Now what I would like to do is plot their estimated position based on their speed. The difficulty that I am having is plotting a new position x miles/meters (any unit) from the current position along the route.
Had it been a straight line, this would have been simple.
- Is there a way to calculate a distance from the current position along the route?
- Are there any restrictions on the number of points?
- Are there specific ways of doing this that should be avoided?
To expand my example with an image:

Imagine that a user reached the first place marker at 07:00am and it’s estimated they would reach the second place marker at 09:00am. The time now (for example) is 08:00am meaning that (estimated) the user should be about half way between the markers. I would then calculate the distance they have walked (again, estimated) and plot their position on the map “distance” away from the first place marker.
Hopefully I have explained the scenario clear enough for people to understand.
I’m relatively new to the Google maps API so any thoughts would be helpful. Other similar questions have been asked on SO but from what I can see, none have been answered or have requested as many details as I have.
Thanks in advance.
UPDATE: Having spent a lot of time trying to work it out I failed miserably. Here is what I know:
- I should create the path using a PolyLine (I can do this, I have a list of lat/lng)
- There is a JS extension called epoly.js but this isn’t compatible with V3
- Using spherical.interpolate wont work because it doesn’t follow the path.
I used to do a lot of this stuff in a past life as a cartographer. Your polyline is made up of a succession of points (lat/long coordinates). Between each successive point you calculate the distance, adding it up as you go along until you get to the desired distance.
The real trick is calculating the distance between two lat/long points which are spherical coordinates (ie points on a curved surface). Since you are dealing with fairly small distances you could feasibly convert the lat/long coordinates to the local map grid system (which is flat). The distance between two points is then straight forward right angle pythagoras (sum of the squares and all that). Movable Type website has a lot of good (javascript) code on this here.
The second way would be to do the spherical distance calculation – not pretty but you can see it here
Personally I’d go the route of converting the coordinates to the local grid system which in the UK should be OSGB. Its the least contorted method.
Hope this helps
Edit:
I’ve assumed that you can extract your polyline coordinates using the google api. I havn’t done this in version 3 of the api, but it should be straight forward. Also, the polyline coordinates should be fairly close together that you don’t need to interpolate intermediate points – just grab the nearest polyline coordinate (saves you having to do a bearing and distance calculation).
Edit2 – With Code
I’ve had a go at putting some code together, but probably won’t have time to finish it within your time limit (I do have a job). You should be able to get the jist. The coordinate conversion code is lifted from the movable type web site and the basic google maps stuff from one of google’s examples. Basically it draws a polyline with mouse clicks, puts the lat/long of each mouse click in table field, converts the coordinate to OSGB and then to OS Grid (see here). After the first click it then calculates the distance between each subsequent point. Hope this gets you on the road.
Map.js: