天地圖實現標點、點聚合、信息窗體和區域划分


 initMap() {
      //初始化地圖對象
      this.map = new T.Map("my_map");
      // this.map.enableDrag();
      var ctrl = new T.Control.MapType();
      this.map.addControl(ctrl);
      this.map.centerAndZoom(new T.LngLat(122.323867, 29.97176), 12);
      this.loadMap();
    },
    loadMap() {
      this.map.clearOverLays();
      // this.removeMarkets();
      this.arrayObj = [];
      //創建對象
      let administrative = new T.AdministrativeDivision();
      var config = {
        needSubInfo: false,
        needAll: false,
        needPolygon: true,
        needPre: true,
        searchType: 1,
        searchWord: "xx市"
      };
      administrative.search(config, this.searchResult);
      this.map.clearOverLays();
      this.arrayObj = [];
    },
    searchResult(result) {
      //console.log(result);
      if (result.getStatus() == 100) {
        var data = result.getData();
        // //console.log(data);
        this.polygon(data[0].points);
      } else {
        result.getMsg();
      }
    },
    polygon(points) {
      var pointsArr = [];
      for (var i = 0; i < points.length; i++) {
        var regionLngLats = [];
        var regionArr = points[i].region.split(",");
        for (var m = 0; m < regionArr.length; m++) {
          var lnglatArr = regionArr[m].split(" ");
          var lnglat = new T.LngLat(lnglatArr[0], lnglatArr[1]);
          regionLngLats.push(lnglat);
          pointsArr.push(lnglat);
        }
        //創建面對象
        var polygon = new T.Polygon(regionLngLats, {
          color: "#172ED6",
          weight: 3,
          lineStyle: "dashed",
          opacity: 1,
          fillColor: "#FFFFFF",
          fillOpacity: 0
        });
        //向地圖上添加行政區划面
        this.map.addOverLay(polygon);
        // map.addOverLay(line);
      }
      //顯示最佳比例尺
      // this.map.setViewport(pointsArr);
    },
    removeMarkets() {
      var lays = this.map.getOverlays(); //獲取地圖上所有的覆蓋物
      var s = 0;
      for (var i = lays.length - 1; i >= 0; i--) {
        //倒序刪除避免長度發生變化
        if ((lays[i].Type = 1000)) {
          //根據地圖上覆蓋物的類型刪除
          this.map.removeOverLay(lays[i]); //從地圖上移除。
          //        s++;
        }
      }
    },
    // 點擊顯示點信息
    // 景區
    showBridge(e) {
      // this.loadMap();
      // //console.log(e);
      //創建圖片對象
      let a = [];
      let imgUrl = "";
      let icon = new T.Icon({
        iconUrl: require("../../assets/image/gis/point.png"),
        iconSize: new T.Point(27, 27),
        iconAnchor: new T.Point(10, 25)
      });
      // 創建點
      var marker = new T.Marker(new T.LngLat(e.lng, e.lat), {
        icon: icon
      });
      // if (e.p) {

 

      // }
      if (e.flagPicUrl == null) {
        if (e.flagPic == null) {
          // 暫無圖片
          imgUrl = require("../../assets/image/gis/icon/noPic.jpg");
        } else {
          imgUrl = "http://txl.tourzj.gov.cn/sitepic/Imgbig/" + e.flagPic;
        }
      } else {
        imgUrl = e.flagPicUrl;
      }
      a.push(marker);
      var infoWin1 = new T.InfoWindow();
      let sContent =
        "<div  style='width: 200px;#04213E;'>" +
        "<img style='width: 100%;' src=" +
        imgUrl +
        " ><div>" +
        "<p style='padding:10px;color:#fff;margin:0'>" +
        e.unitName +
        "</p>" +
        "<p style='padding:10px;color:#fff;margin:0'>地址:" +
        e.address +
        "</p>" +
        "</div></div>";
      infoWin1.setContent(sContent);
      marker.addEventListener("click", function(e) {
        marker.openInfoWindow(infoWin1);
      });
      //console.log(e.lng, e.lat);
      this.map.centerAndZoom(new T.LngLat(e.lng, e.lat), 12);
      setTimeout(() => {
        marker.openInfoWindow(infoWin1);
      }, 100);
      // 將標注添加到地圖中
      var markers = new T.MarkerClusterer(this.map, {
        markers: a
        // markers: array
      });
      // markers.openInfoWindow(infoWin1);
    },

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM