Ver Fonte

地图定位sql

周壕 há 10 meses atrás
pai
commit
88238cdfcf
1 ficheiros alterados com 75 adições e 99 exclusões
  1. 75 99
      src/main/resources/static/a4gis/index.html

+ 75 - 99
src/main/resources/static/a4gis/index.html

@@ -228,7 +228,6 @@
             isMercator: true, // 地图是否采用Mercator坐标系
             mustTile: true // 支持全球连续模式
           });
-        console.log("MapControl",map.MainMap, map);
 
         // 地图参数配置
         mapConfig = {
@@ -281,18 +280,27 @@
 
         map.MainMap.on("load", function (){
           console.log("map.MainMap.on.load",arguments);
-          //添加一个图层,用户坐标点显示
-          if(graLayer==null) {
-            graLayer = new GraphicsLayer();
-            map.MainMap._innerAddLayer(graLayer);
+          //通知父页面,加载完成
+          window.parent.postMessage({action:'test', message:'hello,我即将传给父项目'}, "*");
+        });
 
-            //通知父页面,加载完成
-            window.parent.postMessage({action:'test', message:'hello,我即将传给父项目'}, "*");
+        //创建GraphicsLayer
+        app.graLayer = new GraphicsLayer();
+        map.AddLayer(app.graLayer);
+        app.graLayer.on("mouse-over", function (evt) {
+          map.MainMap.setMapCursor("pointer");
+        });
+        app.graLayer.on("click", function (evt) {
+          console.log('app.graLayer click',evt);
+          if(evt && evt.graphic && evt.graphic.attributes){
+            //map.MainMap.infoWindow.show(evt.graphic.geometry);
+            //map.MainMap.infoWindow.setFeatures(evt.graphic);
+            zoomToCenter(evt.graphic.attributes, false);
+            console.log('app.graLayer click evt.graphic', evt.graphic);
           }
         });
-        map.MainMap.on("click", function (event){
-          //testers.push({x:event.mapPoint2.x, y:event.mapPoint2.y});
-          //console.log("map.MainMap.on.click", JSON.stringify(testers));
+        app.graLayer.on("mouse-out", function (evt) {
+          map.MainMap.setMapCursor("default");
         });
 
         // 图层初始化完成事件
@@ -302,39 +310,13 @@
           // 创建空间引用
           app.sr = new SpatialReference(4326);
 
-          //创建GraphicsLayer
-          app.graLayer = new GraphicsLayer();
-
-          //将GraphicsLayer添加到地图
-          map.AddLayer(app.graLayer);
-
-          //添加一个图层,用户坐标点显示
-          if(graLayer==null) {
-            graLayer = new GraphicsLayer();
-            map.MainMap._innerAddLayer(graLayer);
-
-            //通知父页面,加载完成
-            window.parent.postMessage({action:'test', message:'hello,我即将传给父项目'}, "*");
-          }
+          //通知父页面,加载完成
+          window.parent.postMessage({action:'test', message:'hello,我即将传给父项目'}, "*");
 
           // 地图级别更改事件
           on(map, "MapLevelChanged", function (level) {
             console.log('map1', map.GetLevel());
           });
-          // 鼠标移入事件
-          app.graLayer.on("mouse-over", function (evt) {
-            map.MainMap.setMapCursor("pointer");
-          });
-
-          // 鼠标点击事件
-          app.graLayer.on("click", function (evt) {
-            console.log('e',evt);
-          });
-
-          // 鼠标移出事件
-          app.graLayer.on("mouse-out", function (evt) {
-            map.MainMap.setMapCursor("default");
-          });
 
           // 设置app参数
           app.layer = findLayerByName("地面工程");
@@ -347,8 +329,6 @@
         });
         on(map, "GraphicMouseClick", function (evt) {
           console.log('GraphicMouseClick', evt);
-          // 自定义window方法,vue组件注册,完成vue与iframe的通信,注册方法见baidu-page -> CenterCenter,搜索handleSpanClick
-          //window.parent['handleSpanClick'](evt.name, evt.graphic.attributes);
         });
 
         // 加载地图服务数据
@@ -779,76 +759,72 @@
     var pgs = {};
     var pointObjects = {};
     function setSymbols(points) {
-      graLayer.clear();
-      pgs = {};
-      pointObjects = {};
-
-      require(["esri/geometry/Point", "esri/graphic", "esri/Color", "esri/symbols/SimpleMarkerSymbol", "esri/InfoTemplate"],
-        function (Point, Graphic, Color, SimpleMarkerSymbol, InfoTemplate) {
-          let minx=points[0].x, maxx=points[0].x;
-          let miny=points[0].y, maxy=points[0].y;
-
-          //显示所有标注
-          for(let i=0;i<points.length;i++) {
-            let obj = points[i];
-            if(obj.x==null || obj.x==undefined) continue;
-            if(obj.y==null || obj.y==undefined) continue;
-            obj.x = obj.x *1;
-            obj.y = obj.y *1;
-
-            let point = new Point(obj.x, obj.y, app.sr);
-            let pointSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE,
-                    12, null, new Color([255, 0, 0, 1]));
-
-            let template = new InfoTemplate();
-            template.setTitle("<b>${well_id}</b>");
-            template.setContent("井名:${well_common_name}<br>地址:${geo_description}");
-
-            obj.index = i;
-            var pg = new Graphic(point, pointSymbol, obj, template);
-            // 添加图形到GraphicsLayer
-            graLayer.add(pg);
-            pgs[obj.well_id] = pg;
-            pointObjects[obj.well_id] = point;
-
-            if(obj.x < minx) minx = obj.x;
-            if(obj.x > maxx) maxx = obj.x;
-            if(obj.y < miny) miny = obj.y;
-            if(obj.y > maxy) maxy = obj.y;
-          }
-          //地图放大缩小
-          let border = 0.3;
-          console.log("max min", minx, miny, maxx, maxy);
-          minx = minx*1 - border;
-          miny = miny*1 - border;
-          maxx = maxx*1 + border;
-          maxy = maxy*1 + border;
-          console.log("max min", minx, miny, maxx, maxy);
-          map.ZoomToExtent(minx, miny, maxx, maxy);
-        });
-    }
-
-    function clearSymbols(){
-      graLayer.clear();
-      let long = document.getElementById("long").value;
-      let lat = document.getElementById("lat").value;
-      map.ZoomToLevel(9, long, lat);
+      try {
+        app.graLayer.clear();
+        pgs = {};
+        pointObjects = {};
+
+        require(["esri/geometry/Point", "esri/graphic", "esri/Color", "esri/symbols/SimpleMarkerSymbol", "esri/InfoTemplate"],
+                function (Point, Graphic, Color, SimpleMarkerSymbol, InfoTemplate) {
+                  let minx = points[0].x, maxx = points[0].x;
+                  let miny = points[0].y, maxy = points[0].y;
+
+                  //显示所有标注
+                  for (let i = 0; i < points.length; i++) {
+                    let obj = points[i];
+                    if (obj.x == null || obj.x == undefined) continue;
+                    if (obj.y == null || obj.y == undefined) continue;
+                    obj.x = obj.x * 1;
+                    obj.y = obj.y * 1;
+
+                    let point = new Point(obj.x, obj.y, app.sr);
+                    let pointSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE,
+                            12, null, new Color([255, 0, 0, 1]));
+
+                    let template = new InfoTemplate();
+                    template.setTitle("<b>${well_id}</b>");
+                    template.setContent("井名:${well_common_name}<br>地址:${geo_description}");
+
+                    obj.index = i;
+                    var pg = new Graphic(point, pointSymbol, obj, template);
+                    // 添加图形到GraphicsLayer
+                    app.graLayer.add(pg);
+                    pgs[obj.well_id] = pg;
+                    pointObjects[obj.well_id] = point;
+
+                    if (obj.x < minx) minx = obj.x;
+                    if (obj.x > maxx) maxx = obj.x;
+                    if (obj.y < miny) miny = obj.y;
+                    if (obj.y > maxy) maxy = obj.y;
+                  }
+                  //地图放大缩小
+                  let border = 0.3;
+                  console.log("max min", minx, miny, maxx, maxy);
+                  minx = minx * 1 - border;
+                  miny = miny * 1 - border;
+                  maxx = maxx * 1 + border;
+                  maxy = maxy * 1 + border;
+                  console.log("max min", minx, miny, maxx, maxy);
+                  map.ZoomToExtent(minx, miny, maxx, maxy);
+                });
+      }
+      catch (ex) {
+        console.log("setSymbolsLayer", mGraLayer, ex);
+      }
     }
 
-    function zoomToCenter(obj){
+    function zoomToCenter(obj, isCenter){
       if(obj.x==null || obj.x==undefined) return;
       if(obj.y==null || obj.y==undefined) return;
       obj.x = obj.x *1;
       obj.y = obj.y *1;
 
-      //map.ZoomToLevel(9, obj.x, obj.y);
-
       if(pointObjects[obj.well_id]) {
         console.log("zoomToCenter",pointObjects[obj.well_id]);
         // 设置弹窗自动显示
         map.MainMap.infoWindow.show(pointObjects[obj.well_id]);
         map.MainMap.infoWindow.setFeatures([pgs[obj.well_id]]);
-        map.MainMap.centerAt(pointObjects[obj.well_id]);
+        if(isCenter) map.MainMap.centerAt(pointObjects[obj.well_id]);
       }
     }
 
@@ -862,7 +838,7 @@
       }
       if(event.data.action=="setCenter"){
         let point = JSON.parse(event.data.item);
-        zoomToCenter(point);
+        zoomToCenter(point, true);
       }
     }, false);
   </script>