Index: /trunk/test/atmsdriver/model/PostmileCoordsTest.java
===================================================================
--- /trunk/test/atmsdriver/model/PostmileCoordsTest.java	(revision 266)
+++ /trunk/test/atmsdriver/model/PostmileCoordsTest.java	(revision 269)
@@ -54,5 +54,31 @@
         pmc.load(scan);
         PostmileCoords.Postmile pm = new PostmileCoords.Postmile("5 N 4.02", "33.33", 
-                "-117.117","Dyer Rd");
+                "-117.117","Dyer Rd","0","0");
+        assertEquals(pm,pmc.get(0));
+        assert(pmc.size() == 2);
+    }
+    public void testLoadNoPerps() throws FileNotFoundException
+    {
+
+        System.out.println("load");
+        String line1 = "5 N 4.02, 33.33, -117.117,Dyer Rd,\n5 S 3.56, 33.33, -117.117,Dyer Rd,";
+        Scanner scan = new Scanner(line1).useDelimiter("\\A"); 
+        pmc = new PostmileCoords();
+        pmc.load(scan);
+        PostmileCoords.Postmile pm = new PostmileCoords.Postmile("5 N 4.02", "33.33", 
+                "-117.117","Dyer Rd","0","0");
+        assertEquals(pm,pmc.get(0));
+        assert(pmc.size() == 2);
+    }
+    public void testLoadPerps() throws FileNotFoundException
+    {
+
+        System.out.println("load");
+        String line1 = "5 N 4.02, 33.33, -117.117,Dyer Rd,.1,.1\n5 S 3.56, 33.33, -117.117,Dyer Rd,.2,.2";
+        Scanner scan = new Scanner(line1).useDelimiter("\\A"); 
+        pmc = new PostmileCoords();
+        pmc.load(scan);
+        PostmileCoords.Postmile pm = new PostmileCoords.Postmile("5 N 4.02", "33.33", 
+                "-117.117","Dyer Rd",".1",".1");
         assertEquals(pm,pmc.get(0));
         assert(pmc.size() == 2);
@@ -75,5 +101,5 @@
         PostmileCoords.Postmile result = pmc.find("5 N 4.02");
         assertNotNull(result);
-        PostmileCoords.Postmile pm = new PostmileCoords.Postmile("5 N 4.02", "33.33", "-117.117","Dyer Rd");
+        PostmileCoords.Postmile pm = new PostmileCoords.Postmile("5 N 4.02", "33.33", "-117.117","Dyer Rd", "0.547592", "0.836745");
         assertEquals(pm,result);
         PostmileCoords.Postmile result2 = pmc.find("X");
Index: /trunk/src/tmcsim/application.properties
===================================================================
--- /trunk/src/tmcsim/application.properties	(revision 267)
+++ /trunk/src/tmcsim/application.properties	(revision 269)
@@ -1,5 +1,5 @@
-#Sun, 17 Feb 2019 10:04:13 -0800
+#Thu, 21 Feb 2019 15:22:00 -0800
 
-Application.revision=266
+Application.revision=268
 
 Application.buildnumber=95
Index: /trunk/src/atmsdriver/model/PostmileCoords.java
===================================================================
--- /trunk/src/atmsdriver/model/PostmileCoords.java	(revision 268)
+++ /trunk/src/atmsdriver/model/PostmileCoords.java	(revision 269)
@@ -64,9 +64,18 @@
             }  
             String revisedpm = nameparts[0] + " " + nameparts[1] + " " + statepm;
-            Postmile pm = new Postmile(revisedpm,fields[1],fields[2],fields[3]);
+            Postmile pm;
+            // If the file has 6 fields per line, include the perpx,y values
+            if (fields.length == 6)
+            {
+                pm = new Postmile(revisedpm,fields[1],fields[2],fields[3],fields[4],fields[5]);
+            }
+            else // otherwise assume the file has just 4 fields
+            {
+                pm = new Postmile(revisedpm,fields[1],fields[2],fields[3]);
+            }
             postmileList.add(pm);
         }
         }
-        catch (Exception ex)
+        catch (Exception ex)  // probably badly formatted file
         {
             ex.printStackTrace();
@@ -88,4 +97,7 @@
         String longitude; // the longitude coordinate for this postmile
         String street; // cross street name
+        /* These fields are used by the map to adjust position of dot when zoomed */
+        String perpx="0";  // perpendicular vector, x-component (default value)
+        String perpy="0";  // perpendicular vector, y-component (default value)
         public Postmile(String name, String lat, String longitude, String street)
         {
@@ -94,4 +106,14 @@
             this.longitude = longitude.trim();
             this.street = street.trim();
+        }
+        // This constructor is used if the file contains data for perpendicular vectors
+        public Postmile(String name, String lat, String longitude, String street, String perpx, String perpy)
+        {
+            this.name = name.trim();
+            this.latitude = lat.trim();
+            this.longitude = longitude.trim();
+            this.street = street.trim();
+            this.perpx = perpx.trim();
+            this.perpy = perpy.trim();
         }
         public boolean nameEquals(String target)
@@ -112,5 +134,5 @@
         @Override public String toString()
         {
-            return name + ": " + latitude +","+ longitude +","+ street;
+            return name + ": " + latitude +","+ longitude +","+ street+","+ perpx +","+ perpy;
         }
         public String toJson()
@@ -123,8 +145,10 @@
                     "   \"properties\": \n" +         
                     "       {\"street\": \"%s\", " +
-                    "\"color\": \"desiredcolor\"" +
+                    "\"color\": \"desiredcolor\", " +
+                    "\"perpx\": \"%s\", " +
+                    "\"perpy\": \"%s\"" +
                     "}\n},";
 
-            return String.format(pattern, name, longitude, latitude, street);
+            return String.format(pattern, name, longitude, latitude, street, perpx, perpy);
         }
     }
