天地图中覆盖物创建,删除及自定义信息弹窗(多边形)

需求介绍

这篇博客接着上一篇博客的内容接着往下说,上一篇介绍了天地图key的申请,还有引入vue脚手架中实例化,现在介绍一下天地图中覆盖物的各种操作
在这里插入图片描述

实际开发

首先定义一个空数组point,将坐标放入数组中,然后实例化该多边形,最后在地图实例中加入该多边形实例;多边形实例的内容决定了多边形的基本配置;如果该面携带者其他数据,可以将数据如下方表格内容一样填写进入Polygon实例中,比如下面我在代码里面写到的test就是我自定义的一个变量,被携带进入多边形实例中

名称意义
color多边形边框颜色
weight多边形边框宽度
opacity多边形边框透明度
fillColor多边形填充颜色
fillOpacity多边形填充色透明度
  var points = [];
  points.push(new T.LngLat(116.41136, 39.97569));
  points.push(new T.LngLat(116.411794, 39.9068));
  points.push(new T.LngLat(116.32969, 39.92940));
  points.push(new T.LngLat(116.385438, 39.90610));
  //创建面对象
  var polygon = new T.Polygon(points,{
          color: "blue", weight: 3, opacity: 0.5, fillColor: "#FFFFFF", fillOpacity: 0.5,test:"测试"
  });
  //向地图上添加面
   map.addOverLay(polygon);

接下来设置点击多边形出现弹窗,首先给多边形实例绑定点击事件

polygon.addEventListener("click", this.getinfo);

然后设置事件内容

getinfo(e) {
      var that = this;
      var p = e.target;
      var lnglat = new T.LngLat(p.getCenter().lng, p.getCenter().lat);//获取点击多边形中心经纬度
      var infoWin = new T.InfoWindow();    //创建信息窗口对象
      var Content = e.target.options.test; //设置信息窗口要显示的内容,此处可使用html代码;现在显示的就是之前在polygon实例中添加的数据
      infoWin.setContent(Content);//信息窗口加入信息
      infoWin.setOffset(new T.Point(0, -30));//设置信息窗口边距,第一个决定X方向,第二个决定Y方向
      infoWin.setLngLat(lnglat);//设置信息窗口位置
      that.map.addOverLay(infoWin);//向地图上添加信息窗口
    },

补充:

 polygon.onRemove();//删除多边形
 polygon.show();//显示多边形
 polygon.hide();//隐藏多边形

结果展示

在这里插入图片描述

PS:天地图中使用的覆盖物方式大同小异,如果需要更换其他图形,使用对应的类即可,比如圆形使用的类是Circle,具体的可以去天地图官网示例查看天地图示例网站

如果存在问题请大家批评指正!!!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
百度地图提供了自定义覆盖物的功能,您可以使用该功能在地图上添加自定义的标记、图标、信息窗口等元素。 首先,您需要在地图创建一个自定义覆盖物对象。您可以继承百度地图API的`Overlay`类,实现自己的覆盖物对象。例如,您可以创建一个自定义标记的覆盖物对象: ```javascript function CustomMarker(point) { this._point = point; } CustomMarker.prototype = new BMap.Overlay(); CustomMarker.prototype.initialize = function (map) { this._map = map; var div = document.createElement('div'); div.style.position = 'absolute'; div.style.backgroundColor = 'red'; div.style.width = '20px'; div.style.height = '20px'; div.innerHTML = '自定义标记'; map.getPanes().markerPane.appendChild(div); this._div = div; return div; }; CustomMarker.prototype.draw = function () { var pixel = this._map.pointToOverlayPixel(this._point); this._div.style.left = pixel.x - 10 + 'px'; this._div.style.top = pixel.y - 10 + 'px'; }; ``` 然后,在地图上添加自定义覆盖物对象。您可以使用百度地图API的`Overlay`类的`initialize()`方法和`draw()`方法来实现添加和绘制自定义覆盖物。例如: ```javascript var map = new BMap.Map("mapContainer"); var point = new BMap.Point(116.404, 39.915); map.centerAndZoom(point, 15); var customMarker = new CustomMarker(point); map.addOverlay(customMarker); ``` 以上代码创建了一个地图对象,设置地图心点和缩放级别,然后创建了一个自定义标记的覆盖物对象,并将其添加到地图上显示。 除了自定义标记,您还可以创建其他类型的自定义覆盖物,例如自定义图标、信息窗口等。具体的实现方法可以根据您的需求进行调整。您可以参考百度地图API的文档,了解更多关于自定义覆盖物的相关信息

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值