天地图开发--打点,圈画行政区域

**

1.首先在静态页面引入天地图js文件**

 <script src="http://api.tianditu.gov.cn/api?v=4.0&tk=密钥" type="text/javascript"></script>

然后我们就拥有了一个全局变量T

2.创建地图示例,设置地图参数

要在页面挂在后渲染地图

  data() {
    return {
      cityName: "", //暂存城市名称
      icon: "",
      map:{},
    };
  },
this.$nextTick(() =>{
  this.onLoad();
});
    onLoad() {
      // 基本设置
      let that = this;
      that.map = new window.T.Map("map", {
        // 地图的投影方式 EPSG:900913(墨卡托投影),EPSG:4326(大地平面投影)
        projection: "EPSG:4326",
        // min 0 max 18
        minZoom: 5,
        maxZoom: 18,
      });
      //centerAndZoom 是显示该地图的中心点
      that.map.centerAndZoom(new T.LngLat(104.075931, 30.651651), 5); 

      // 添加控件
      var ctrl = new T.Control.MapType([
        {
          title: "地图", //地图控件上所要显示的图层名称
          icon: "http://api.tianditu.gov.cn/v4.0/image/map/maptype/vector.png", //地图控件上所要显示的图层图标(默认图标大小80x80)
          layer: TMAP_NORMAL_MAP, //地图类型对象,即MapType。  此地图类型展示普通街道视图
        },
        {
          title: "卫星混合",
          icon: "http://api.tianditu.gov.cn/v4.0/image/map/maptype/satellitepoi.png",
          layer: TMAP_HYBRID_MAP, // 此地图类型展示卫星和路网混合视图
        },
      ]);
      that.map.addControl(ctrl);
      //这里是修改一下覆盖在地图上面的标点
      this.icon = new T.Icon({
        iconUrl: require("../../assets/earthquake1.gif"),          //图标地址
        iconSize: new T.Point(36, 36),           //图标大小
        iconAnchor: new T.Point(15, 30),
      });
    },

天地图的功能使用

  1. 关于天地图打点并且鼠标移入标点显示标点相关信息
      staList:[
         {
          staLatitude: 119.507244,
          staLongitude: 27.656711,
          staname:111
        },
          {
          staLatitude: 119.507544,
          staLongitude: 27.63512,
           staname:222
        },]
      staList.forEach((item) => {
        var marker = new T.Marker(
          new T.LngLat(item.staLongitude, item.staLatitude),
          { icon: this.icon }
        );
        that.map.addOverLay(marker); //addOverLay方法,将覆盖物添加到地图中,一个覆盖物实例只能向地图中添加一次。
        marker.disableDragging(); //关闭标注拖拽功能,这里不关闭,标点就可以随便拖动
        //这里是标点过多,以防找不到,这里直接定位到第一个标点出
        that.map.centerAndZoom(
          new T.LngLat(
           staList[0].staLongitude,
           staList[0].staLatitude
          ),
          5
        );

        // 悬停显示窗体
        marker.addEventListener("mousemove", function () {
          console.log(112);
          var sContent = `<div>${item.staName}\r${item.staLongitude}\r${item.staLatitude}</div>`;
          marker.openInfoWindow(sContent, { closeButton: false });
        }); // 将标注添加到地图中
        marker.addEventListener("mouseout", function () {
          console.log(55);
          marker.closeInfoWindow();
        });
      });


//如果标点后端返回的格式是另一种=====================================
      var lnglats = [
        "116.479920,31.737813",
        "116.339000,31.748890",
        "116.38525035406,31.732588298908",
        "118.64865,37.25144",
      ];
            lnglats.forEach((item) => {
        let point = item.split(",");
        let latlng = new T.LngLat(point[0], point[1]);
        // that.map.panTo(latlng, 16);
        // let marker = new T.Marker(latlng, { draggable: true }); //e.lnglat,标注点的地理坐标
        let marker = new T.Marker(latlng, { icon: this.icon }); //e.lnglat,标注点的地理坐标
        that.map.addOverLay(marker); //addOverLay方法,将覆盖物添加到地图中,一个覆盖物实例只能向地图中添加一次。
        marker.disableDragging(); //关闭标注拖拽功能
      });

2 . 对于行政区域进行圈画

      let dde = [];
      let style = {
        color: "blue",
        weight: 2,
        opacity: 2,
        lineStyle: "dashed", // 虚线
        fillColor: "#5079f6",
        fillOpacity: 0.1, // 透明度
      };
            let provice = [
        {
          lat: 119.507244,
          lin: 27.656711,
        },
        {
          lat: 119.507544,
          lin: 27.63512,
        },
        {
          lat: 119.504115,
          lin: 27.632399,
        },
        {
          lat: 119.506514,
          lin: 27.621061,
        }];
            for (let j = 0; j < provice.length; j++) {
        var point = new T.LngLat(provice[j].lat, provice[j].lin);
        dde.push(point);
      }
      const poly = new T.Polygon(dde, style);
      this.map.addOverLay(poly); //向地图上添加行政区划面/
      this.map.setViewport(dde); //显示最佳比例尺
   
   //   如果区域范围后端返回的格式是另一种=====================================
         var points= 
        "116.479920 31.737813,
        116.339000 31.748890,
        116.38525035406 31.732588298908,
        118.64865 37.25144",
      ;
       var pointsArr = [];
            for (var i = 0; i < points.length; i++) {
             var regionLngLats = [];
             var regionArr = points[i].split(",");       //这里是regionArr = [“116.479920 31.737813”,“116.339000 31.737813”]
             for (var m = 0; m < regionArr.length; m++) {
                 var lnglatArr = regionArr[m].split(" ");   //lnglatArr = [116.479920,31.737813]
                 //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: "#fff", weight: 2, opacity: 1, fillOpacity: 0.1, fillColor: '#5079f6' });//创建面对象
             map.addOverLay(polygon); //向地图上添加行政区划面/
             map.setViewport(pointsArr);//显示最佳比例尺
             }
          }
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在uni-app中实现地图打点功能,你可以使用uni-app的原生API结合第三方地图插件来实现。以下是一种常见的实现方法: 1. 首先,在uni-app项目中安装并引入第三方地图插件,例如腾讯地图或百度地图。你可以通过uni-app插件市场或者npm进行安装。 2. 在需要使用地图的页面中,引入地图组件,并在data中定义相关变量,如下所示: ```vue <template> <view> <map :longitude="longitude" :latitude="latitude" :markers="markers"></map> </view> </template> <script> export default { data() { return { longitude: 0, // 经度 latitude: 0, // 纬度 markers: [], // 打点信息 }; }, }; </script> ``` 3. 在页面的`onLoad`生命周期钩子中获取用户当前位置的经纬度,并将其赋值给`longitude`和`latitude`变量: ```javascript onLoad() { uni.getLocation({ type: 'gcj02', success: (res) => { this.longitude = res.longitude; this.latitude = res.latitude; }, }); }, ``` 4. 在需要进行打点的位置,通过调用第三方地图插件的相关API来添加打点,例如: ```javascript addMarker() { const marker = { id: '1', latitude: 39.908823, longitude: 116.397470, title: 'Marker1', iconPath: 'path/to/icon.png', width: 20, height: 20, }; this.markers.push(marker); }, ``` 5. 最后,在页面中调用`addMarker`方法来添加打点,即可在地图上显示打点信息。 这是一个简单的示例,你可以根据自己的需求进行扩展和优化。记得根据使用的地图插件的文档来使用相应的API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看不见看不见看不见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值