From f90f24f12f331f491737492022c17dffb79ec505 Mon Sep 17 00:00:00 2001
From: lishouyi <linlangsur163@163.com>
Date: 星期四, 01 六月 2023 20:16:42 +0800
Subject: [PATCH] 管理后台:订单列表添加的地图优化

---
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html |  194 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 148 insertions(+), 46 deletions(-)

diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html
index 7cb77b0..7dc2b2f 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html
@@ -1,4 +1,5 @@
 @layout("/common/_container.html"){
+<link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css"/>
 <div class="ibox float-e-margins">
     <div class="ibox-content">
         <div class="form-horizontal">
@@ -20,7 +21,12 @@
                     <div class="form-group">
                         <label class="col-sm-2 control-label">*起始地点:</label>
                         <div class="col-sm-6">
-                            <input type="text" id="tipinput1" class="form-control" id="startAddress" name="startAddress" placeholder="请输入">
+                            <input type="text" id="tipinput1" class="form-control" id="startAddress" name="startAddress" autocomplete="off" placeholder="请输入">
+                            <div id="map_of_cs_one"
+                                 style="visibility: visible; display: none; left: 1088.5px; top: 485px; min-width: 166px;"></div>
+                            <div class="amap-sug-result-one" style="position: absolute;display: none; min-width: 96%;right: 0px;overflow: hidden;max-width: 96%;margin-right: 16px;z-index: 1024;
+background-color: #fefefe;border: 1px solid #d1d1d1"></div>
+                            </div>
                         </div>
                     </div>
                     <div class="form-group">
@@ -32,7 +38,11 @@
                     <div class="form-group">
                         <label class="col-sm-2 control-label">目的地:</label>
                         <div class="col-sm-6">
-                            <input type="text" id="tipinput2" class="form-control" id="endAddress" name="endAddress">
+                            <input type="text" id="tipinput2" class="form-control" id="endAddress" autocomplete="off" name="endAddress">
+                            <div id="map_of_cs_two"
+                                 style="visibility: visible; display: none; left: 1088.5px; top: 485px; min-width: 166px;"></div>
+                            <div class="amap-sug-result-two" style="position: absolute;display: none; min-width: 96%;right: 0px;overflow: hidden;max-width: 96%;margin-right: 16px;z-index: 1024;
+background-color: #fefefe;border: 1px solid #d1d1d1"></div>
                         </div>
                     </div>
                     <div class="form-group">
@@ -60,7 +70,7 @@
     }
 </script>
 <script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
-<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=86fcccf007b64ae97b01c3c982c0ef0f"></script>
+<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=86fcccf007b64ae97b01c3c982c0ef0f&plugin=AMap.PlaceSearch,AMap.AutoComplete,AMap.Marker,AMap.Geocoder"></script>
 <script type="text/javascript">
     //地图加载
     var map1 = new AMap.Map("container1", {
@@ -68,29 +78,74 @@
         center: [104.064, 30.6576],
         resizeEnable: true
     });
-    //输入提示
-    var autoOptions1 = {
-        input: "tipinput1"
-    };
 
-    AMap.plugin(['AMap.PlaceSearch','AMap.AutoComplete'], function(){
-        var auto = new AMap.AutoComplete(autoOptions1);
-        var placeSearch = new AMap.PlaceSearch({
-            map: map1
-        });  //构造地点查询类
-        auto.on("select", select);//注册监听,当选中某条记录时会触发
-        function select(e) {
-            placeSearch.setCity(e.poi.adcode);
-            placeSearch.search(e.poi.name);  //关键字查询查询
-            TOrderInfoDlg.position = e.poi;
-            console.log(e.poi);
-            TOrderInfoDlg.startAddress = {
-                name:e.poi.name,
-                address: e.poi.district + e.poi.address,
-                lat: e.poi.location.lat,
-                lon: e.poi.location.lng,
-            };
+    function autoInput1(){
+        var keywords = document.getElementById("tipinput1").value;
+        AMap.plugin('AMap.AutoComplete', function(){
+            // 实例化Autocomplete
+            var autoOptions = {
+                city: '全国'
+            }
+            var autoComplete = new AMap.Autocomplete(autoOptions);
+            autoComplete.search(keywords, function(status, result) {
+                $(".amap-sug-result-one").html("");
+                $(".amap-sug-result-one").show();
+                console.log(result.info);
+                for(const key in result.tips){
+                    $(".amap-sug-result-one").append('<div class="auto-item amapaddr" id="amap-sug4" onclick="javascript:geoCode1(\''+result.tips[key].name+'\', \''+result.tips[key].district+ result.tips[key].address+'\');">' + result.tips[key].name+ " <span style='color: darkgray;margin-left: 13px;'>" + result.tips[key].district+ result.tips[key].address+ " </span></div>");
+                }
+            })
+        })
+    }
+
+    autoInput1();
+
+    document.getElementById("tipinput1").oninput = autoInput1;
+
+    var geocoder1 = new AMap.Geocoder({
+
+    });
+
+    var marker1 = new AMap.Marker();
+
+    function geoCode1(t, d) {
+
+        var address  = t; //document.getElementById('address').value;
+        geocoder1.getLocation(address, function(status, result) {
+            if (status === 'complete'&&result.geocodes.length) {
+                console.log(result);
+                var lnglat = result.geocodes[0].location;
+                TOrderInfoDlg.startAddress = {
+                    name: t,
+                    address: result.geocodes[0].formattedAddress,
+                    lat: lnglat.lat,
+                    lon: lnglat.lng,
+                };
+
+                document.getElementById('tipinput1').value = t;
+                marker1.setPosition(lnglat);
+                map1.add(marker1);
+                map1.setFitView(marker1);
+            }else{
+                log.error('根据地址查询位置失败');
+            }
+        });
+        $(".amap-sug-result-one").hide();
+    }
+
+
+    map1.on('click', function(e) {
+        console.log(e,'e')
+        ln = e.lnglat.getLng();
+        lt = e.lnglat.getLat();
+        if (marker1){
+            map1.remove(marker1);
         }
+        marker1 = new AMap.Marker({
+            position: new AMap.LngLat(ln, lt),
+            anchor: 'bottom-center',
+            map: map1,
+        });
     });
 
 
@@ -99,29 +154,76 @@
         center: [104.064, 30.6576],
         resizeEnable: true
     });
-    //输入提示
-    var autoOptions2 = {
-        input: "tipinput2"
-    };
 
-    AMap.plugin(['AMap.PlaceSearch','AMap.AutoComplete'], function(){
-        var auto = new AMap.AutoComplete(autoOptions2);
-        var placeSearch = new AMap.PlaceSearch({
-            map: map2
-        });  //构造地点查询类
-        auto.on("select", select);//注册监听,当选中某条记录时会触发
-        function select(e) {
-            placeSearch.setCity(e.poi.adcode);
-            placeSearch.search(e.poi.name);  //关键字查询查询
-            TOrderInfoDlg.position = e.poi;
-            console.log(e.poi);
-            TOrderInfoDlg.endAddress = {
-                name:e.poi.name,
-                address: e.poi.district + e.poi.address,
-                lat: e.poi.location.lat,
-                lon: e.poi.location.lng,
-            };
-        }
+    function autoInput2(){
+        var keywords = document.getElementById("tipinput2").value;
+        AMap.plugin('AMap.AutoComplete', function(){
+            // 实例化Autocomplete
+            var autoOptions = {
+                city: '全国'
+            }
+            var autoComplete = new AMap.Autocomplete(autoOptions);
+            autoComplete.search(keywords, function(status, result) {
+                $(".amap-sug-result-two").html("");
+                $(".amap-sug-result-two").show();
+                console.log(result.info);
+                for(const key in result.tips){
+                    $(".amap-sug-result-two").append('<div class="auto-item amapaddr" id="amap-sug4" onclick="javascript:geoCode2(\''+result.tips[key].name+'\', \''+result.tips[key].district+ result.tips[key].address+'\');">' + result.tips[key].name+ " <span style='color: darkgray;margin-left: 13px;'>" + result.tips[key].district+ result.tips[key].address+ " </span></div>");
+                }
+            })
+        })
+    }
+
+    autoInput2();
+
+    document.getElementById("tipinput2").oninput = autoInput2;
+
+    var geocoder2 = new AMap.Geocoder({
+
     });
+
+    var marker2 = new AMap.Marker();
+
+    function geoCode2(t, d) {
+
+        var address  = t; //document.getElementById('address').value;
+        geocoder2.getLocation(address, function(status, result) {
+            if (status === 'complete'&&result.geocodes.length) {
+                console.log(t);
+                console.log(result);
+                var lnglat = result.geocodes[0].location;
+                TOrderInfoDlg.endAddress = {
+                    name: t,
+                    address: result.geocodes[0].formattedAddress,
+                    lat: lnglat.lat,
+                    lon: lnglat.lng,
+                };
+                document.getElementById('tipinput2').value = t;
+                marker2.setPosition(lnglat);
+                map2.add(marker2);
+                map2.setFitView(marker2);
+            }else{
+                log.error('根据地址查询位置失败');
+            }
+        });
+        $(".amap-sug-result-two").hide();
+    }
+
+
+    map2.on('click', function(e) {
+        console.log(e,'e');
+        ln = e.lnglat.getLng();
+        lt = e.lnglat.getLat();
+
+        if (marker2){
+            map2.remove(marker2);
+        }
+        marker2 = new AMap.Marker({
+            position: new AMap.LngLat(ln, lt),
+            anchor: 'bottom-center',
+            map: map2,
+        });
+    });
+
 </script>
 @}

--
Gitblit v1.7.1