From b3e7f379e72111f55a28c302804702ee7c66bfa2 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期六, 18 一月 2025 16:39:16 +0800
Subject: [PATCH] 1.管网的js相关代码

---
 app/src/main/java/com/dayu/pipirrapp/bean/db/PipeNetworkBean.java                       |  103 ++++++
 settings.gradle                                                                         |    2 
 app/src/main/assets/js/map.js                                                           |  258 ++++++++++++++-
 expand_button/src/main/AndroidManifest.xml                                              |    4 
 expand_button/src/test/java/com/example/expand_button/ExampleUnitTest.kt                |   17 +
 app/src/main/java/com/dayu/pipirrapp/tool/MyWebViewInterface.java                       |   20 +
 expand_button/.gitignore                                                                |    1 
 expand_button/consumer-rules.pro                                                        |    0 
 expand_button/src/androidTest/java/com/example/expand_button/ExampleInstrumentedTest.kt |   24 +
 app/src/main/java/com/dayu/pipirrapp/bean/db/DivideBean.java                            |    6 
 app/src/main/res/layout/fragment_map.xml                                                |   55 +++
 app/src/main/java/com/dayu/pipirrapp/bean/net/PipeNetworkResult.java                    |   92 +++++
 app/src/main/java/com/dayu/pipirrapp/bean/net/DivideResult.java                         |   39 +
 expand_button/build.gradle                                                              |   41 ++
 expand_button/src/main/java/com/example/expand_button/ExpandButton.kt                   |   14 
 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java                          |  195 +++++++++++
 app/src/main/java/com/dayu/pipirrapp/bean/net/PipeNetworkListResult.java                |   58 +++
 expand_button/proguard-rules.pro                                                        |   21 +
 18 files changed, 896 insertions(+), 54 deletions(-)

diff --git a/app/src/main/assets/js/map.js b/app/src/main/assets/js/map.js
index a13de46..8238d7f 100644
--- a/app/src/main/assets/js/map.js
+++ b/app/src/main/assets/js/map.js
@@ -4,9 +4,11 @@
         IMAGES: {
             LOCATION: 'img/location.png',
             MARKER_BLACK: 'img/marker_black.svg',
-            MARKER_RED: 'img/marker_red.svg', 
+            MARKER_RED: 'img/marker_red.svg',
             MARKER_BLUE: 'img/marker_blue.svg',
-            CENTER_PIN: 'img/push_pin.svg'
+            CENTER_PIN: 'img/push_pin.svg',
+            DIVIDE_BLUE: 'img/divide_home_blue.svg',
+            DIVIDE_RED: 'img/divide_home_red.svg'
         },
         MAP: {
             DEFAULT_ZOOM: 12,
@@ -16,8 +18,14 @@
     let map;
     let lastMarker = null;
     let lastClickedMarker = null;
+    let lastClickedDivide = null;
     let isShowWaterIntakeDetail = false;
+    let isShowDivideDetail = false;
     let zoom = 12;
+
+    // 瀛樺偍鎵�鏈夌缃戠嚎璺殑鏁扮粍
+    let pipeLineList = [];
+    let currentPipePath = [];
 
     // 灏嗘柟娉曟寕杞藉埌 window 涓�
     function mountMethodToWindow() {
@@ -33,7 +41,11 @@
         window.showPin = showPin;
         window.cancelPin = cancelPin;
         window.refreshMarker = refreshMarker;
-
+        window.addDivide = addDivide;
+        window.showAllPipeLines = showAllPipeLines;
+        window.hideAllPipeLines = hideAllPipeLines;
+        window.clearAllPipeLines = clearAllPipeLines;
+        window.addPipeNetwork = addPipeNetwork;
     }
 
 
@@ -129,7 +141,7 @@
             iconAnchor: new T.Point(10, 10)
         });
         let marker = new T.Marker(
-            new T.LngLat(lng, lag), 
+            new T.LngLat(lng, lag),
             { icon: icon }
         );
         map.addOverLay(marker);
@@ -158,7 +170,7 @@
             if (lastClickedMarker !== null) {
                 lastClickedMarker.setIcon(createIcon(CONFIG.IMAGES.MARKER_BLUE));
             }
-            if (isShowWaterIntakeDetail) {
+            if (isShowWaterIntakeDetail || isShowDivideDetail) {
                 // 鍋囧鏄剧ず浜嗗彇姘村彛璇︽儏鍒欓殣钘忓彇姘村彛璇︽儏
                 isShowWaterIntakeDetail = false;
                 window.Android.closeWaterIntakeView();
@@ -167,7 +179,6 @@
                 getLngLat(data.lnglat);
             }
         }
-
     }
 
     // 鐐瑰嚮鏍囨敞鐨勪簨浠�
@@ -175,7 +186,7 @@
         if (!isShowCenterPin) {
             chageMarkerIcon(data);
             showWaterIntakeDetail(id);
-        }else {
+        } else {
             showToast("褰撳墠姝e湪淇敼閫変腑鍙栨按鍙g殑缁忕含搴︼紝瀹屾垚鎴栭��鍑哄悗鎵嶅彲閫夋嫨鍏朵粬锛�");
         }
 
@@ -186,11 +197,14 @@
         // 鐐瑰嚮鐨勬爣娉ㄦ敼涓虹孩鑹�
         var currentMarker = data.target;
         currentMarker.setIcon(createIcon(CONFIG.IMAGES.MARKER_RED));
-        
+
         if (lastClickedMarker !== null) {
             if (!isEqualsLngLat(data.target.getLngLat(), lastClickedMarker.getLngLat())) {
                 lastClickedMarker.setIcon(createIcon(CONFIG.IMAGES.MARKER_BLUE));
             }
+        }
+        if (lastClickedDivide !== null) {
+            lastClickedDivide.setIcon(createIcon(CONFIG.IMAGES.MARKER_BLUE));
         }
         lastClickedMarker = data.target;
         map.panTo(currentMarker.getLngLat());
@@ -232,8 +246,8 @@
         label.setFontColor("#FFFFFF");
         label.setFontSize(10);
         marker.label = label;
-        if (isRed){
-            lastClickedMarker=marker;
+        if (isRed) {
+            lastClickedMarker = marker;
         }
         map.addOverLay(label);
         map.addOverLay(marker); // 灏嗘爣娉ㄦ坊鍔犲埌鍦板浘涓�
@@ -250,9 +264,9 @@
             iconSize: new T.Point(20, 20),
             iconAnchor: new T.Point(10, 10)
         });
-      
+
         locationMarker = new T.Marker(
-            newPoint, 
+            newPoint,
             { icon: icon }
         );
         map.addOverLay(locationMarker);
@@ -264,15 +278,144 @@
     let locationMarker;
     function updateInspectionLocation(log, lat) {
         var lastLat = lat;
-        // const intervalId = setInterval(() => {
-        // lastLat=lastLat+0.0001;
         var newPoint = new T.LngLat(log, lastLat);
         path.push(newPoint);
         lineLayer.setLngLats(path);
         map.addOverLay(lineLayer);
-        // 绉诲姩鍦板浘瑙嗚鍒版渶鍚庝竴涓綅缃�
+    }
 
-        // }, 500);
+
+    var pipePath = [];
+    var pipeLineLayer = new T.Polyline([], { color: '#E9900A', weight: 3, opacity: 0.8 });
+
+    // 绠$綉绾胯矾绠$悊
+    const PipelineManager = {
+        lines: [],  // 瀛樺偍鎵�鏈夊畬鎴愮殑绾胯矾
+        currentLine: {
+            points: [],  // 褰撳墠绾胯矾鐨勭偣
+            overlay: null  // 褰撳墠绾胯矾鐨勫浘灞傚璞�
+        },
+        
+        // 绾胯矾鏍峰紡閰嶇疆
+        style: {
+            color: '#1890FF',
+            weight: 3,
+            opacity: 0.8
+        },
+        
+        /**
+         * 娣诲姞鐐瑰埌绠$綉绾胯矾
+         * @param {number} lng 缁忓害
+         * @param {number} lat 绾害
+         * @param {boolean} isNewLine 鏄惁寮�濮嬫柊鐨勭嚎璺�
+         */
+        addPoint(lng, lat, isNewLine) {
+            if (isNewLine) {
+                this.finishCurrentLine();
+            }
+            
+            const point = new T.LngLat(lng, lat);
+            this.currentLine.points.push(point);
+            
+            if (this.currentLine.points.length > 1) {
+                this.updateCurrentLineDisplay();
+            }
+        },
+        
+        /**
+         * 鏇存柊褰撳墠绾胯矾鐨勬樉绀�
+         */
+        updateCurrentLineDisplay() {
+            if (!this.currentLine.overlay) {
+                // 鍒涘缓鏂扮殑绾胯矾鍥惧眰
+                this.currentLine.overlay = new T.Polyline(this.currentLine.points, this.style);
+                map.addOverLay(this.currentLine.overlay);
+            } else {
+                // 鏇存柊鐜版湁绾胯矾鐨勭偣
+                this.currentLine.overlay.setLngLats(this.currentLine.points);
+            }
+        },
+        
+        /**
+         * 瀹屾垚褰撳墠绾胯矾
+         */
+        finishCurrentLine() {
+            if (this.currentLine.points.length > 1) {
+                if (this.currentLine.overlay) {
+                    // 灏嗗綋鍓嶇嚎璺坊鍔犲埌瀹屾垚鍒楄〃
+                    this.lines.push(this.currentLine.overlay);
+                }
+            } else if (this.currentLine.overlay) {
+                // 濡傛灉鐐规暟涓嶈冻锛屾竻闄ゅ浘灞�
+                map.removeOverLay(this.currentLine.overlay);
+            }
+            
+            // 閲嶇疆褰撳墠绾胯矾
+            this.currentLine = {
+                points: [],
+                overlay: null
+            };
+        },
+        
+        /**
+         * 鏄剧ず鎵�鏈夌嚎璺�
+         */
+        showAll() {
+            this.lines.forEach(line => map.addOverLay(line));
+            if (this.currentLine.overlay) {
+                map.addOverLay(this.currentLine.overlay);
+            }
+        },
+        
+        /**
+         * 闅愯棌鎵�鏈夌嚎璺�
+         */
+        hideAll() {
+            this.lines.forEach(line => map.removeOverLay(line));
+            if (this.currentLine.overlay) {
+                map.removeOverLay(this.currentLine.overlay);
+            }
+        },
+        
+        /**
+         * 娓呴櫎鎵�鏈夌嚎璺�
+         */
+        clearAll() {
+            this.hideAll();
+            this.lines = [];
+            this.currentLine = {
+                points: [],
+                overlay: null
+            };
+        }
+    };
+
+    /**
+     * 娣诲姞绠$綉绾胯矾鐐�
+     */
+    function addPipeNetwork(lng, lat, isNewLine) {
+        PipelineManager.addPoint(lng, lat, isNewLine);
+    }
+
+    /**
+     * 鏄剧ず鎵�鏈夌缃戠嚎璺�
+     */
+    function showAllPipeLines() {
+        PipelineManager.showAll();
+    }
+
+    /**
+     * 闅愯棌鎵�鏈夌缃戠嚎璺�
+     */
+    function hideAllPipeLines() {
+        PipelineManager.hideAll();
+    }
+
+    /**
+     * 娓呴櫎鎵�鏈夌缃戠嚎璺�
+     */
+    function clearAllPipeLines() {
+        PipelineManager.clearAll();
     }
 
     var aginPath = [];
@@ -316,7 +459,7 @@
         isShowCenterPin = true;
         map.addEventListener("moveend", mapMoveEnd);
         window.Android.refreshCenter(map.getCenter().getLng(), map.getCenter().getLat());
-       return true;
+        return true;
     }
     //鍙栨秷淇敼瀹氫綅
     function cancelPin() {
@@ -341,8 +484,8 @@
     // 娣诲姞闃叉姈鍑芥暟
     function debounce(fn, delay) {
         let timer = null;
-        return function() {
-            if(timer) clearTimeout(timer);
+        return function () {
+            if (timer) clearTimeout(timer);
             timer = setTimeout(() => {
                 fn.apply(this, arguments);
             }, delay);
@@ -356,8 +499,83 @@
         return new T.Icon({
             iconUrl: iconUrl,
             iconSize: new T.Point(size, size),
-            iconAnchor: new T.Point(size/2, size)
+            iconAnchor: new T.Point(size / 2, size)
         });
     }
+    //娣诲姞鍒嗘按鎴�
+    function addDivide(id, lng, lat, name) {
+        addDivide(id, lng, lat, name, false)
+    }
+    //娣诲姞鍒嗘按鎴�
+    function addDivide(id, lng, lat, name, isRed) {
+        console.log("function銆嬨�嬨�嬨�嬨�媋ddMarker>>>id:" + id);
+
+        const iconUrl = isRed ? CONFIG.IMAGES.DIVIDE_RED : CONFIG.IMAGES.DIVIDE_BLUE;
+        let marker = new T.Marker(
+            new T.LngLat(lng, lat),
+            { icon: createIcon(iconUrl) }
+        );
+        //娣诲姞鐐瑰嚮浜嬩欢
+        marker.addEventListener("click", (data) => {
+            addDivideListener(id, data)
+        });
+
+        let label = new T.Label({
+            text: `<div style='position:absolute;left:-50%;transform: translateX(-50%);'>${name}<div>`,
+            position: marker.getLngLat(),
+            offset: new T.Point(0, 8), // 璁剧疆鏍囨敞鏂囧瓧鐨勪綅缃�
+            opacity: 1, // 璁剧疆鏂囨湰鐨勬樉绀轰笉閫忔槑搴︼紙鑼冨洿0-1锛�
+        });
+        label.setBorderLine(0); // 璁剧疆鏂囨湰鐨勮竟妗嗙嚎瀹�
+        label.setBackgroundColor("transparent"); // 璁剧疆鏂囨湰鐨勮儗鏅壊锛堥�忔槑鑹诧級
+        label.setFontColor("#FFFFFF");
+        label.setFontSize(10);
+        marker.label = label;
+        if (isRed) {
+            lastClickedMarker = marker;
+        }
+        map.addOverLay(label);
+        map.addOverLay(marker); // 灏嗘爣娉ㄦ坊鍔犲埌鍦板浘涓�
+        return "addMarker鍔犺浇鎴愬姛 id:" + id
+    }
+    // 淇敼鐐瑰嚮鏍囨敞鐨勫浘鏍�
+    function chageDivideIcon(data) {
+        // 鐐瑰嚮鐨勬爣娉ㄦ敼涓虹孩鑹�
+        var currentMarker = data.target;
+        currentMarker.setIcon(createIcon(CONFIG.IMAGES.DIVIDE_RED));
+
+        if (lastClickedDivide !== null) {
+            if (!isEqualsLngLat(data.target.getLngLat(), lastClickedDivide.getLngLat())) {
+                lastClickedDivide.setIcon(createIcon(CONFIG.IMAGES.DIVIDE_BLUE));
+            }
+        }
+        if (lastClickedMarker !== null) {
+            lastClickedMarker.setIcon(createIcon(CONFIG.IMAGES.MARKER_BLUE));
+        }
+        lastClickedDivide = data.target;
+        map.panTo(currentMarker.getLngLat());
+    }
+
+    // 鐐瑰嚮鏍囨敞鐨勪簨浠�
+    function addDivideListener(id, data) {
+        // if (!isShowCenterPin) {
+        chageDivideIcon(data);
+        showDivideDetail(id);
+        // } else {
+        //     showToast("褰撳墠姝e湪淇敼閫変腑鍙栨按鍙g殑缁忕含搴︼紝瀹屾垚鎴栭��鍑哄悗鎵嶅彲閫夋嫨鍏朵粬锛�");
+        // }
+
+    }
+
+    // 璋冪敤鍘熺敓瀹夊崜鏂规硶鏄剧ず鍙栨按鍙h鎯�
+    function showDivideDetail(data) {
+        isShowDivideDetail = true;
+        window.Android.showDivideDetail(data);
+    }
+
+
+
+
+
 
 })();
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/DivideBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/DivideBean.java
index 46f24f6..2b7fa4b 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/db/DivideBean.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/DivideBean.java
@@ -87,7 +87,7 @@
     /**
      * 瑕嗙洊闈㈢Н
      */
-    private double area;
+    private String area;
 
 
     // Getters and Setters
@@ -99,11 +99,11 @@
         this.address = address;
     }
 
-    public double getArea() {
+    public String getArea() {
         return area;
     }
 
-    public void setArea(double area) {
+    public void setArea(String area) {
         this.area = area;
     }
 
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/PipeNetworkBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/PipeNetworkBean.java
new file mode 100644
index 0000000..8dbcf2b
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/PipeNetworkBean.java
@@ -0,0 +1,103 @@
+package com.dayu.pipirrapp.bean.db;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+import com.dayu.pipirrapp.bean.net.PipeNetworkResult;
+
+import java.util.List;
+
+/**
+ * PipeNetworkBean -
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2025-01-17
+ */
+@Entity
+public class PipeNetworkBean {
+    @PrimaryKey(autoGenerate = true)
+    public long id;
+
+    String type;
+    String networkId;
+    List<PipeNetworkResult.Data> data;
+
+
+    public class Data {
+        public class Coordinate {
+            String lat;
+            String lng;
+
+            public String getLat() {
+                return lat;
+            }
+
+            public void setLat(String lat) {
+                this.lat = lat;
+            }
+
+            public String getLng() {
+                return lng;
+            }
+
+            public void setLng(String lng) {
+                this.lng = lng;
+            }
+        }
+
+        List<PipeNetworkResult.Data.Coordinate> coordinates;
+        String type;
+        String networkId;
+
+        public List<PipeNetworkResult.Data.Coordinate> getCoordinates() {
+            return coordinates;
+        }
+
+        public void setCoordinates(List<PipeNetworkResult.Data.Coordinate> coordinates) {
+            this.coordinates = coordinates;
+        }
+
+        public String getType() {
+            return type;
+        }
+
+        public void setType(String type) {
+            this.type = type;
+        }
+
+        public String getNetworkId() {
+            return networkId;
+        }
+
+        public void setNetworkId(String networkId) {
+            this.networkId = networkId;
+        }
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getNetworkId() {
+        return networkId;
+    }
+
+    public void setNetworkId(String networkId) {
+        this.networkId = networkId;
+    }
+
+    public List<PipeNetworkResult.Data> getData() {
+        return data;
+    }
+
+    public void setData(List<PipeNetworkResult.Data> data) {
+        this.data = data;
+    }
+
+
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/DivideResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/DivideResult.java
index 960bcf3..b28d76c 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/DivideResult.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/DivideResult.java
@@ -29,9 +29,14 @@
     private String divideId;
 
     /**
-     * 鍒嗘按鎴垮悕绉�
+     * 鍒嗘按鎴垮悕绉�(鍒楄〃鎺ュ彛杩斿洖)
      */
     private String divideName;
+
+    /**
+     * 鍒嗘按鎴垮悕绉�(璇︽儏鎺ュ彛杩斿洖)
+     */
+    private String name;
 
     /**
      * 璐熻矗浜�
@@ -41,17 +46,17 @@
     /**
      * 缂栧彿
      */
-    private int id;
+    private String id;
 
     /**
      * 绾害
      */
-    private double lat;
+    private String lat;
 
     /**
      * 缁忓害
      */
-    private double lng;
+    private String lng;
 
     /**
      * 鎿嶄綔鏃堕棿
@@ -81,8 +86,15 @@
     /**
      * 瑕嗙洊闈㈢Н
      */
-    private double area;
+    private String area;
 
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
 
     // Getters and Setters
     public String getAddress() {
@@ -93,11 +105,11 @@
         this.address = address;
     }
 
-    public double getArea() {
+    public String getArea() {
         return area;
     }
 
-    public void setArea(double area) {
+    public void setArea(String area) {
         this.area = area;
     }
 
@@ -141,27 +153,28 @@
         this.header = header;
     }
 
-    public int getId() {
+
+    public String getId() {
         return id;
     }
 
-    public void setId(int id) {
+    public void setId(String id) {
         this.id = id;
     }
 
-    public double getLat() {
+    public String getLat() {
         return lat;
     }
 
-    public void setLat(double lat) {
+    public void setLat(String lat) {
         this.lat = lat;
     }
 
-    public double getLng() {
+    public String getLng() {
         return lng;
     }
 
-    public void setLng(double lng) {
+    public void setLng(String lng) {
         this.lng = lng;
     }
 
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/PipeNetworkListResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/PipeNetworkListResult.java
new file mode 100644
index 0000000..9f97df4
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/PipeNetworkListResult.java
@@ -0,0 +1,58 @@
+package com.dayu.pipirrapp.bean.net;
+
+import java.util.List;
+
+/**
+ * PipeNetworkListResult -
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2025-01-17
+ */
+public class PipeNetworkListResult {
+    int itemTotal;
+    int pageCurr;
+    int pageSize;
+    int pageTotal;
+    List<PipeNetworkResult> obj;
+
+    public int getItemTotal() {
+        return itemTotal;
+    }
+
+    public void setItemTotal(int itemTotal) {
+        this.itemTotal = itemTotal;
+    }
+
+    public int getPageCurr() {
+        return pageCurr;
+    }
+
+    public void setPageCurr(int pageCurr) {
+        this.pageCurr = pageCurr;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(int pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public int getPageTotal() {
+        return pageTotal;
+    }
+
+    public void setPageTotal(int pageTotal) {
+        this.pageTotal = pageTotal;
+    }
+
+    public List<PipeNetworkResult> getObj() {
+        return obj;
+    }
+
+    public void setObj(List<PipeNetworkResult> obj) {
+        this.obj = obj;
+    }
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/PipeNetworkResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/PipeNetworkResult.java
new file mode 100644
index 0000000..01105ef
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/PipeNetworkResult.java
@@ -0,0 +1,92 @@
+package com.dayu.pipirrapp.bean.net;
+
+import java.util.List;
+
+/**
+ * PipeNetworkResult - 绠$綉瀹炰緥
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2025-01-17
+ */
+public class PipeNetworkResult {
+    String type;
+    String networkId;
+    List<Data> data;
+
+
+    public class Data {
+        public class Coordinate {
+            String lat;
+            String lng;
+
+            public String getLat() {
+                return lat;
+            }
+
+            public void setLat(String lat) {
+                this.lat = lat;
+            }
+
+            public String getLng() {
+                return lng;
+            }
+
+            public void setLng(String lng) {
+                this.lng = lng;
+            }
+        }
+
+        List<Coordinate> coordinates;
+        String type;
+        String networkId;
+
+        public List<Coordinate> getCoordinates() {
+            return coordinates;
+        }
+
+        public void setCoordinates(List<Coordinate> coordinates) {
+            this.coordinates = coordinates;
+        }
+
+        public String getType() {
+            return type;
+        }
+
+        public void setType(String type) {
+            this.type = type;
+        }
+
+        public String getNetworkId() {
+            return networkId;
+        }
+
+        public void setNetworkId(String networkId) {
+            this.networkId = networkId;
+        }
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getNetworkId() {
+        return networkId;
+    }
+
+    public void setNetworkId(String networkId) {
+        this.networkId = networkId;
+    }
+
+    public List<Data> getData() {
+        return data;
+    }
+
+    public void setData(List<Data> data) {
+        this.data = data;
+    }
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
index addff5b..c414864 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -31,6 +31,7 @@
 import com.dayu.pipirrapp.bean.db.InspectionLocationBean;
 import com.dayu.pipirrapp.bean.db.LatLonBean;
 import com.dayu.pipirrapp.bean.db.MarkerBean;
+import com.dayu.pipirrapp.bean.db.PipeNetworkBean;
 import com.dayu.pipirrapp.bean.net.CenterPointResult;
 import com.dayu.pipirrapp.bean.net.DivideListResult;
 import com.dayu.pipirrapp.bean.net.DivideResult;
@@ -38,6 +39,8 @@
 import com.dayu.pipirrapp.bean.net.InspectionRequest;
 import com.dayu.pipirrapp.bean.net.MarkerListResult;
 import com.dayu.pipirrapp.bean.net.MarkerResult;
+import com.dayu.pipirrapp.bean.net.PipeNetworkListResult;
+import com.dayu.pipirrapp.bean.net.PipeNetworkResult;
 import com.dayu.pipirrapp.dao.DaoSingleton;
 import com.dayu.pipirrapp.databinding.FragmentMapBinding;
 import com.dayu.pipirrapp.net.ApiManager;
@@ -148,7 +151,9 @@
         getCenterPoint();
         initView();
         initWeb();
+
         getMarkerData();
+        getDivideList();
 
         chageInspecState(mInspectionState);
         return binding.getRoot();
@@ -213,7 +218,7 @@
                 super.onPageFinished(view, url);
                 //椤甸潰鍔犺浇瀹屾垚
                 webViewIsFinished = true;
-                initLocalData();
+                webFinishInitLocalData();
                 aginShowLocation(null);
 
             }
@@ -221,9 +226,9 @@
     }
 
     /**
-     * 鍒濆鍖栨湰鍦版暟鎹�
+     * web鍔犺浇瀹屽垵濮嬪寲鏈湴鏁版嵁
      */
-    public void initLocalData() {
+    public void webFinishInitLocalData() {
         //璺宠浆涓績鐐�
         centerPointBean = DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().findFirst();
         jumpCenterPoint();
@@ -231,6 +236,11 @@
         if (!webNoFinishMarkerData.isEmpty()) {
             for (MarkerBean bean : webNoFinishMarkerData) {
                 setMapMarker(bean);
+            }
+        }
+        if (!webNoFinishDivideData.isEmpty()) {
+            for (DivideBean bean : webNoFinishDivideData) {
+                setMapDivide(bean);
             }
         }
         //鏄剧ず鎵�鏈夊彇姘村彛
@@ -252,9 +262,7 @@
             @Override
             public void onNext(BaseResponse<MarkerListResult> t) {
                 if (t.isSuccess()) {
-
                     if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) {
-
                         List<MarkerBean> markerBeans = t.getContent().getObj().stream()
                                 .map(result -> {
                                     MarkerBean markerBean = new MarkerBean();
@@ -349,6 +357,20 @@
 
     }
 
+    /**
+     * 鏄剧ず鍒嗘按鎴胯鎯�
+     *
+     * @param data
+     */
+    public void showDivideDetail(String data) {
+        MyLog.i(data);
+        DivideBean markerBean = divideBeanMap.get(data);
+        if (markerBean != null) {
+            binding.bottomLL.setVisibility(View.GONE);
+            getDivideDetail(markerBean);
+        }
+
+    }
 
     /**
      * 鑾峰彇鍦板浘涓績鐐�
@@ -581,18 +603,18 @@
     /**
      * 娣诲姞鍙栨按鍙f爣娉�
      */
-    public void setDivide(DivideBean divide) {
+    public void setMapDivide(DivideBean divide) {
         if (divide != null) {
             if (webViewIsFinished) {
                 if (!TextUtils.isEmpty(divide.getLng()) && !TextUtils.isEmpty(divide.getLat())) {
-                    mWebView.evaluateJavascript("javascript:addMarker(\"" + divide.getId() + "\",\"" + divide.getLng() + "\",\"" + divide.getLat() + "\",\"" + divide.getDivideName() + "\")", new ValueCallback<String>() {
+                    mWebView.evaluateJavascript("javascript:addDivide(\"" + divide.getId() + "\",\"" + divide.getLng() + "\",\"" + divide.getLat() + "\",\"" + divide.getDivideName() + "\")", new ValueCallback<String>() {
                         @Override
                         public void onReceiveValue(String value) {
                         }
                     });
                     divideBeanMap.put(divide.getId(), divide);
                 } else {
-                    MyLog.d("setMapMarker>" + divide.getDivideName() + "缁忕含搴︿负绌�");
+                    MyLog.d("setMapDivide>" + divide.getDivideName() + "缁忕含搴︿负绌�");
                 }
             } else {
                 webNoFinishDivideData.add(divide);
@@ -600,6 +622,28 @@
         }
     }
 
+    /**
+     * 娣诲姞鍙栨按鍙f爣娉�
+     */
+    public void setMapDivide(PipeNetworkBean pipeNetworkBean) {
+//        if (divide != null) {
+//            if (webViewIsFinished) {
+//                for ()
+//                if (!TextUtils.isEmpty(divide.getLng()) && !TextUtils.isEmpty(divide.getLat())) {
+//                    mWebView.evaluateJavascript("javascript:addDivide(\"" + divide.getId() + "\",\"" + divide.getLng() + "\",\"" + divide.getLat() + "\",\"" + divide.getDivideName() + "\")", new ValueCallback<String>() {
+//                        @Override
+//                        public void onReceiveValue(String value) {
+//                        }
+//                    });
+//                    divideBeanMap.put(divide.getId(), divide);
+//                } else {
+//                    MyLog.d("setMapDivide>" + divide.getDivideName() + "缁忕含搴︿负绌�");
+//                }
+//            } else {
+//                webNoFinishDivideData.add(divide);
+//            }
+//        }
+    }
 
     /**
      * 寮�濮嬪贰妫�鐨勭浉鍏抽�昏緫
@@ -748,8 +792,32 @@
         });
     }
 
+    /**
+     * 鏄剧ず鍙栨按鍙h鎯�
+     */
+    private void getDivideDetail(DivideBean divideBean) {
+        ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/project/divide/getone/" + divideBean.getDivideId(), DivideResult.class, null, new SubscriberListener<BaseResponse<DivideResult>>() {
+            @Override
+            public void onNext(BaseResponse<DivideResult> t) {
+                if (t.isSuccess()) {
+                    DivideBean divideBean = getDivideBean(t.getContent());
+                    showDivideMarker(divideBean);
+                } else {
+                    ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg());
+                }
+            }
+
+        });
+    }
+
+    /**
+     * 鏄剧ず鍙栨按鍙h鎯�
+     */
     private void showMarker(MarkerBean markerBean) {
         binding.bottomLL.setVisibility(View.VISIBLE);
+        binding.phoneLL.setVisibility(View.GONE);
+        binding.headerLL.setVisibility(View.GONE);
+        binding.editePoint.setVisibility(View.VISIBLE);
         binding.markerAddress.setText(markerBean.getAddress());
         binding.markerName.setText(markerBean.getName());
         binding.markerBlockName.setText(markerBean.getBlockName());
@@ -785,23 +853,112 @@
     }
 
     /**
+     * 鏄剧ず鍒嗘按鎴胯鎯�
+     *
+     * @param divideBean
+     */
+    private void showDivideMarker(DivideBean divideBean) {
+        binding.bottomLL.setVisibility(View.VISIBLE);
+        binding.phoneLL.setVisibility(View.VISIBLE);
+        binding.headerLL.setVisibility(View.VISIBLE);
+        binding.editePoint.setVisibility(View.GONE);
+        binding.markerAddress.setText(divideBean.getAddress());
+        binding.markerName.setText(divideBean.getDivideName());
+        binding.markerBlockName.setText(divideBean.getBlockName());
+        binding.phone.setText(divideBean.getPhone());
+        binding.header.setText(divideBean.getHeader());
+        binding.lat.setText(divideBean.getLat());
+        binding.lng.setText(divideBean.getLng());
+        //淇敼缁忕含搴�
+        binding.editePoint.setOnClickListener(v -> {
+
+            mWebView.evaluateJavascript("javascript:showPin(\"" + divideBean.getLng() + "\",\"" + divideBean.getLat() + "\")", value -> {
+                binding.pointRL.setVisibility(View.VISIBLE);
+                binding.pointCenterImg.setVisibility(View.VISIBLE);
+                MyLog.d("showPin>>" + value);
+            });
+
+        });
+        //鍙栨秷淇敼缁忕含搴�
+        binding.pointCancel.setOnClickListener(v -> {
+                    binding.pointCenterImg.setVisibility(View.GONE);
+                    binding.pointRL.setVisibility(View.GONE);
+                    mWebView.evaluateJavascript("javascript:cancelPin()", value -> {
+
+                    });
+                }
+        );
+        //纭淇敼缁忕含搴�
+        binding.pointEdt.setOnClickListener(v -> {
+            ConfirmDialog confirmDialog = new ConfirmDialog(MapFragment.this.getActivity(), "纭淇敼鍒拌浣嶇疆鍚楋紵", (confirmDialog1, v1) -> {
+                confirmDialog1.dismiss();
+//                updataInstake(markerBean);
+            });
+            confirmDialog.show();
+        });
+    }
+
+
+    /**
      * 鑾峰彇鍒嗘按鎴�
      */
     private void getDivideList() {
-        ApiManager.getInstance().requestPost(MapFragment.this.getContext(), BASE_URL + "/project/divide/getDivides", DivideListResult.class, null, new SubscriberListener<BaseResponse<DivideListResult>>() {
+        ApiManager.getInstance().requestGetHideLoading(MapFragment.this.getContext(), BASE_URL + "/project/divide/getDivides", DivideListResult.class, null, new SubscriberListener<BaseResponse<DivideListResult>>() {
             @Override
             public void onNext(BaseResponse<DivideListResult> t) {
                 try {
                     if (t.isSuccess()) {
-                        if (t.getContent().getObj() != null && t.getContent().getObj().isEmpty()) {
+                        if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) {
 
                             List<DivideBean> divideBeans = new ArrayList<>();
                             for (DivideResult divideResult : t.getContent().getObj()) {
                                 DivideBean divideBean = getDivideBean(divideResult);
+                                setMapDivide(divideBean);
                                 divideBeans.add(divideBean);
                             }
+                            // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁
+                            DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).divideDao().insertAll(divideBeans)
+                                    .subscribeOn(Schedulers.io()) // 鍦� IO 绾跨▼涓婃墽琛�
+                                    .observeOn(AndroidSchedulers.mainThread()) // 鍦ㄤ富绾跨▼涓婅瀵�
+                                    .subscribe(() -> {
+                                        // 鎻掑叆鎴愬姛
+                                        Log.i("mWebView", "鏁版嵁鎻掑叆鎴愬姛");
+                                    }, throwable -> {
+                                        // 鎻掑叆澶辫触
+                                        Log.e("mWebView", "鏁版嵁鎻掑叆澶辫触: " + throwable.getMessage());
+                                    });
+                        }
 
 
+                    } else {
+                        ToastUtil.showToastLong(MapFragment.this.getContext(), t.getMsg());
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    CrashReport.postCatchedException(e);
+                }
+            }
+
+        });
+    }
+
+    /**
+     * 鑾峰彇绠$綉
+     */
+    private void getPipeNetworkList() {
+        ApiManager.getInstance().requestGetHideLoading(MapFragment.this.getContext(), BASE_URL + "/project/network/all", PipeNetworkListResult.class, null, new SubscriberListener<BaseResponse<PipeNetworkListResult>>() {
+            @Override
+            public void onNext(BaseResponse<PipeNetworkListResult> t) {
+                try {
+                    if (t.isSuccess()) {
+                        if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) {
+
+                            List<DivideBean> divideBeans = new ArrayList<>();
+                            for (PipeNetworkResult divideResult : t.getContent().getObj()) {
+                                PipeNetworkBean divideBean = getPipeNetworkBean(divideResult);
+                                setMapDivide(divideBean);
+//                                divideBeans.add(divideBean);
+                            }
                             // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁
                             DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).divideDao().insertAll(divideBeans)
                                     .subscribeOn(Schedulers.io()) // 鍦� IO 绾跨▼涓婃墽琛�
@@ -838,11 +995,16 @@
         divideBean.setBlockId(divideResult.getBlockId());
         divideBean.setBlockName(divideResult.getBlockName());
         divideBean.setDivideId(divideResult.getDivideId());
-        divideBean.setDivideName(divideResult.getDivideName());
+        if (!TextUtils.isEmpty(divideResult.getDivideName())) {
+            divideBean.setDivideName(divideResult.getDivideName());
+        } else {
+            divideBean.setDivideName(divideResult.getName());
+        }
+
         divideBean.setHeader(divideResult.getHeader());
-        divideBean.setId(String.valueOf(divideResult.getId()));
-        divideBean.setLat(String.valueOf(divideResult.getLat()));
-        divideBean.setLng(String.valueOf(divideResult.getLng()));
+        divideBean.setId(divideResult.getId());
+        divideBean.setLat(divideResult.getLat());
+        divideBean.setLng(divideResult.getLng());
         divideBean.setOperateDt(divideResult.getOperateDt());
         divideBean.setOperator(divideResult.getOperator());
         divideBean.setPhone(divideResult.getPhone());
@@ -852,6 +1014,11 @@
         return divideBean;
     }
 
+    private static @NonNull PipeNetworkBean getPipeNetworkBean(PipeNetworkResult divideResult) {
+        PipeNetworkBean pipeNetworkBean = new PipeNetworkBean();
+
+        return pipeNetworkBean;
+    }
 
     @Override
     public void onDestroy() {
diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/MyWebViewInterface.java b/app/src/main/java/com/dayu/pipirrapp/tool/MyWebViewInterface.java
index fb6fd97..4370624 100644
--- a/app/src/main/java/com/dayu/pipirrapp/tool/MyWebViewInterface.java
+++ b/app/src/main/java/com/dayu/pipirrapp/tool/MyWebViewInterface.java
@@ -43,7 +43,6 @@
                     myContext.showWaterIntakeDetail(data);
                 }
             });
-
         }
     }
 
@@ -98,4 +97,23 @@
             });
         }
     }
+
+    /**
+     * 鏄剧ず鍒嗘按鎴胯鎯�
+     * @param id
+     */
+    @JavascriptInterface
+    public void showDivideDetail(String id){
+        if (myContext instanceof MapFragment) {
+            new Handler(Looper.getMainLooper()).post(new Runnable() {
+                @Override
+                public void run() {
+                    // 鍦ㄤ富绾跨▼涓婃墽琛孶I鎿嶄綔
+                    // 鏇存柊鎴栨搷浣淯I鍏冪礌鐨勪唬鐮�
+                    myContext.showDivideDetail(id);
+
+                }
+            });
+        }
+    }
 }
diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml
index a897113..715b846 100644
--- a/app/src/main/res/layout/fragment_map.xml
+++ b/app/src/main/res/layout/fragment_map.xml
@@ -11,8 +11,7 @@
     <RelativeLayout
         android:id="@+id/webViewRL"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        >
+        android:layout_height="match_parent">
 
 
         <WebView
@@ -272,6 +271,57 @@
                         android:src="@drawable/ic_edit_btn" />
                 </LinearLayout>
 
+
+                <LinearLayout
+                    android:id="@+id/headerLL"
+                    android:layout_width="match_parent"
+                    android:layout_height="25dp"
+                    android:gravity="center"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="璐熻矗浜猴細"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_text_size_little" />
+
+                    <TextView
+                        android:id="@+id/header"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:ellipsize="end"
+                        android:maxLines="1"
+                        android:text=""
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_text_size_little" />
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/phoneLL"
+                    android:layout_width="match_parent"
+                    android:layout_height="25dp"
+                    android:gravity="center"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="鑱旂郴鐢佃瘽锛�"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_text_size_little" />
+
+                    <TextView
+                        android:id="@+id/phone"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:ellipsize="end"
+                        android:maxLines="1"
+                        android:text=""
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_text_size_little" />
+                </LinearLayout>
+
                 <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="25dp"
@@ -296,7 +346,6 @@
                         android:textColor="@color/black"
                         android:textSize="@dimen/common_text_size_little" />
                 </LinearLayout>
-
             </LinearLayout>
 
         </ScrollView>
diff --git a/expand_button/.gitignore b/expand_button/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/expand_button/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/expand_button/build.gradle b/expand_button/build.gradle
new file mode 100644
index 0000000..8386c9b
--- /dev/null
+++ b/expand_button/build.gradle
@@ -0,0 +1,41 @@
+plugins {
+    id 'com.android.library'
+    id 'org.jetbrains.kotlin.android'
+}
+
+android {
+    namespace 'com.example.expand_button'
+    compileSdk 34
+
+    defaultConfig {
+        minSdk 24
+
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        consumerProguardFiles "consumer-rules.pro"
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+        }
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+    kotlinOptions {
+        jvmTarget = '1.8'
+    }
+}
+
+dependencies {
+
+    implementation 'androidx.core:core-ktx:1.13.1'
+    implementation platform('org.jetbrains.kotlin:kotlin-bom:1.8.0')
+    implementation 'androidx.appcompat:appcompat:1.7.0'
+    implementation 'com.google.android.material:material:1.12.0'
+    testImplementation 'junit:junit:4.13.2'
+    androidTestImplementation 'androidx.test.ext:junit:1.2.1'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
+}
\ No newline at end of file
diff --git a/expand_button/consumer-rules.pro b/expand_button/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/expand_button/consumer-rules.pro
diff --git a/expand_button/proguard-rules.pro b/expand_button/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/expand_button/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/expand_button/src/androidTest/java/com/example/expand_button/ExampleInstrumentedTest.kt b/expand_button/src/androidTest/java/com/example/expand_button/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000..54ebcbb
--- /dev/null
+++ b/expand_button/src/androidTest/java/com/example/expand_button/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package com.example.expand_button
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+    @Test
+    fun useAppContext() {
+        // Context of the app under test.
+        val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+        assertEquals("com.example.expand_button.test", appContext.packageName)
+    }
+}
\ No newline at end of file
diff --git a/expand_button/src/main/AndroidManifest.xml b/expand_button/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a5918e6
--- /dev/null
+++ b/expand_button/src/main/AndroidManifest.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+
+</manifest>
\ No newline at end of file
diff --git a/expand_button/src/main/java/com/example/expand_button/ExpandButton.kt b/expand_button/src/main/java/com/example/expand_button/ExpandButton.kt
new file mode 100644
index 0000000..841ce47
--- /dev/null
+++ b/expand_button/src/main/java/com/example/expand_button/ExpandButton.kt
@@ -0,0 +1,14 @@
+package com.example.expand_button
+
+class ExpandButton {
+
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/expand_button/src/test/java/com/example/expand_button/ExampleUnitTest.kt b/expand_button/src/test/java/com/example/expand_button/ExampleUnitTest.kt
new file mode 100644
index 0000000..a572cdc
--- /dev/null
+++ b/expand_button/src/test/java/com/example/expand_button/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package com.example.expand_button
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+    @Test
+    fun addition_isCorrect() {
+        assertEquals(4, 2 + 2)
+    }
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 2739383..82a9a97 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,4 @@
 rootProject.name = "pipIrrApp"
 include ':app'
+include ':mylibrary'
+include ':expand_button'

--
Gitblit v1.8.0