Help Mr Jones to enjoy his bicycle round-trip
Haskell, 633 characters

import List
c n=n&gt;&gt;=(++" ").show.(*3)
(x&amp;y)l="&lt;text x='"++c[x]++"' y='"++c[y]++"'&gt;"++l++"&lt;/text&gt;"
f%p=[a-1,b+2,(a+b)/2]where n=map(f.fst)p;a=minimum n;b=maximum n
s p=concat["&lt;svg xmlns='http://www.w3.org/2000/svg' viewBox='",c[i,m-1,j,n],"'&gt;&lt;polygon fill='none' stroke='#c8c' points='",c$snd=&lt;&lt;(sort$map a p),"'/&gt;&lt;g font-size='1' fill='#bbb'&gt;",(\x-&gt;(x&amp;m$show x)++(i&amp;x$show x))=&lt;&lt;[floor(i`min`m)..ceiling(j`max`n)],"&lt;/g&gt;&lt;g font-size='2'&gt;",snd=&lt;&lt;p,"&lt;/g&gt;&lt;/svg&gt;"]where a((x,y),_)=(atan2(x-q)(y-r),[x,y]);[i,j,q,m,n,r]=fst%p++snd%p
w(l,s)=((x,y),(x&amp;y)l)where(x,r)=v s;(y,_)=v r
v=head.reads.tail
main=interact$s.map(w.break(=='(')).lines


Rather longish for code-golf, but produces a lovely SVG map:


Or, if your browser can't handle SVG, a PNG of that image:





Edit: (648 -> 633) in-line coordinate drawing, and possibly draw more than needed, letting them be clipped by the viewBox; also a few golf-tricks here and there.