diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt
index da2bf851..779e5059 100644
--- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt
+++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt
@@ -425,6 +425,30 @@ class ImportPreProcess {
     }
 
 
+//    /**
+//     * 生成默认路口数据的参考数据
+//     * */
+//    fun generateIntersectionReference(renderEntity: RenderEntity) {
+//        // 路口数据的其他点位,是保存在nodeList对应的数组下
+//        if (renderEntity.properties.containsKey("nodeList")) {
+//            val nodeListJsonArray: JSONArray = JSONArray(renderEntity.properties["nodeList"])
+//            for (i in 0 until nodeListJsonArray.length()) {
+//                val nodeJSONObject = nodeListJsonArray.getJSONObject(i)
+//                val intersectionReference = ReferenceEntity()
+//                intersectionReference.renderEntityId = renderEntity.id
+//                intersectionReference.name = "${renderEntity.name}参考点"
+//                intersectionReference.table = renderEntity.table
+//                intersectionReference.zoomMin = renderEntity.zoomMin
+//                intersectionReference.zoomMax = renderEntity.zoomMax
+//                intersectionReference.taskId = renderEntity.taskId
+//                // 与原有方向指向平行的线
+//                intersectionReference.geometry = GeometryTools.createGeometry(nodeJSONObject["geometry"].toString()).toString()
+//                intersectionReference.properties["qi_table"] = renderEntity.table
+//                intersectionReference.properties["type"] = "node"
+//                Realm.getDefaultInstance().insert(intersectionReference)
+//            }
+//        }
+//    }
     /**
      * 生成默认路口数据的参考数据
      * */
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt
index f9451430..6183ee8c 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt
@@ -126,7 +126,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
                     //116.25017070328308 40.061730653134696
                     // 定位到指定位置
                     niMapController.mMapView.vtmMap.animator()
-                        .animateTo(GeoPoint( 40.055878135289966, 116.3011588289057    ))
+                        .animateTo(GeoPoint( 39.91831047339841,116.36009639042146   ))
                 }
 //                R.id.personal_center_menu_task_list -> {
 //                    findNavController().navigate(R.id.TaskManagerFragment)
diff --git a/app/src/test/java/com/navinfo/omqs/ParallelRectangleAlgorithm.java b/app/src/test/java/com/navinfo/omqs/ParallelRectangleAlgorithm.java
new file mode 100644
index 00000000..c7d2eab0
--- /dev/null
+++ b/app/src/test/java/com/navinfo/omqs/ParallelRectangleAlgorithm.java
@@ -0,0 +1,97 @@
+package com.navinfo.omqs;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+public class ParallelRectangleAlgorithm {
+    public static List<Point> getParallelRectanglePoints(List<Point> polygon) {
+        // Step 1: Get the first two points of the polygon to form a line
+        List<Point> line = new ArrayList<>();
+        line.add(polygon.get(0));
+        line.add(polygon.get(1));
+        // Step 2: Find the points on the opposite side or farther away from the line
+        List<Point> farPoints = new ArrayList<>();
+        for (int i = 2; i < polygon.size(); i++) {
+            Point point = polygon.get(i);
+            int side = getSide(line.get(0), line.get(1), point);
+            double distance = getDistance(line.get(0), line.get(1), point);
+            if (side != 0 && side != Math.signum(distance)) {
+                farPoints.add(point);
+            }
+        }
+        // Step 3: Find the perpendicular lines to the first line passing through the farthest points
+        List<Point> perpendicularLines = new ArrayList<>();
+        for (Point farPoint : farPoints) {
+            double dx = line.get(1).getY() - line.get(0).getY();
+            double dy = line.get(0).getX() - line.get(1).getX();
+            double magnitude = Math.sqrt(dx * dx + dy * dy);
+            dx /= magnitude;
+            dy /= magnitude;
+            double distance = Math.abs((farPoint.getX() - line.get(0).getX()) * dx + (farPoint.getY() - line.get(0).getY()) * dy);
+            Point perpendicularLine = new Point(farPoint.getX() + distance * dx, farPoint.getY() + distance * dy);
+            perpendicularLines.add(perpendicularLine);
+        }
+        // Step 4: Find the intersection points of the perpendicular lines
+        List<Point> intersectionPoints = new ArrayList<>();
+        for (int i = 0; i < perpendicularLines.size(); i++) {
+            for (int j = i + 1; j < perpendicularLines.size(); j++) {
+                Point intersectionPoint = getIntersectionPoint(line.get(0), perpendicularLines.get(i), line.get(1), perpendicularLines.get(j));
+                intersectionPoints.add(intersectionPoint);
+            }
+        }
+        return intersectionPoints;
+    }
+    private static int getSide(Point p1, Point p2, Point point) {
+        return Integer.signum((int) Math.signum((p2.getX() - p1.getX()) * (point.getY() - p1.getY()) - (p2.getY() - p1.getY()) * (point.getX() - p1.getX())));
+    }
+    private static double getDistance(Point p1, Point p2, Point point) {
+        return ((p2.getX() - p1.getX()) * (point.getY() - p1.getY()) - (p2.getY() - p1.getY()) * (point.getX() - p1.getX())) / Math.sqrt((p2.getX() - p1.getX()) * (p2.getX() - p1.getX()) + (p2.getY() - p1.getY()) * (p2.getY() - p1.getY()));
+    }
+    private static Point getIntersectionPoint(Point p1, Point p2, Point p3, Point p4) {
+        double x1 = p1.getX();
+        double y1 = p1.getY();
+        double x2 = p2.getX();
+        double y2 = p2.getY();
+        double x3 = p3.getX();
+        double y3 = p3.getY();
+        double x4 = p4.getX();
+        double y4 = p4.getY();
+        double x = ((x2 - x1) * (x3 * y4 - x4 * y3) - (x4 - x3) * (x1 * y2 - x2 * y1)) / ((x2 - x1) * (y3 - y4) - (x4 - x3) * (y1 - y2));
+        double y = ((y3 - y4) * (x1 * y2 - x2 * y1) - (y1 - y2) * (x3 * y4 - x4 * y3)) / ((x2 - x1) * (y3 - y4) - (x4 - x3) * (y1 - y2));
+        return new Point(x, y);
+    }
+
+    @Test
+    public void test() {
+        List<Point> polygon = new ArrayList<>();
+        polygon.add(new Point(0, 0));
+        polygon.add(new Point(2, 0));
+        polygon.add(new Point(2, 1));
+        polygon.add(new Point(1, 1));
+        polygon.add(new Point(1, 2));
+        polygon.add(new Point(0, 2));
+        List<Point> result = getParallelRectanglePoints(polygon);
+        for (Point point : result) {
+            System.out.println(point);
+        }
+    }
+}
+class Point {
+    private double x;
+    private double y;
+    public Point(double x, double y) {
+        this.x = x;
+        this.y = y;
+    }
+    public double getX() {
+        return x;
+    }
+    public double getY() {
+        return y;
+    }
+    @Override
+    public String toString() {
+        return "(" + x + ", " + y + ")";
+    }
+}
\ No newline at end of file
diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml
index c3f94b2d..d268713f 100644
--- a/collect-library/src/main/assets/editormarker.xml
+++ b/collect-library/src/main/assets/editormarker.xml
@@ -1951,7 +1951,7 @@
         </m>
 
         <m v="OMDB_AREA">
-            <area use="sign-bg" repeat="true" src="assets:omdb/area_test.jpg" stroke="#ff0000" stroke-width="2"></area>
+            <area use="sign-bg" repeat="false" src="assets:omdb/diversion_zone.jpg" stroke="#ff0000" stroke-width="2"></area>
         </m>
         <!-- 路口 -->
         <m v="OMDB_INTERSECTION">
diff --git a/collect-library/src/main/assets/omdb/diversion_zone.jpg b/collect-library/src/main/assets/omdb/diversion_zone.jpg
new file mode 100644
index 00000000..204baaa2
Binary files /dev/null and b/collect-library/src/main/assets/omdb/diversion_zone.jpg differ
diff --git a/collect-library/src/main/assets/omdb/veer_side_walk.jpg b/collect-library/src/main/assets/omdb/veer_side_walk.jpg
new file mode 100644
index 00000000..5bcf84f4
Binary files /dev/null and b/collect-library/src/main/assets/omdb/veer_side_walk.jpg differ
diff --git a/vtm b/vtm
index 4c9926d1..c2434827 160000
--- a/vtm
+++ b/vtm
@@ -1 +1 @@
-Subproject commit 4c9926d105877fce305025e8f85651ccea947c4f
+Subproject commit c2434827f1201a16a2120db777cd0aa8209c4682