leaflet绘制的多边形,缩放地图保持大小不变

leaflet的基本使用不再次具体说明,建议查看官方和博客;
需求:如何在地图上绘制多边形,缩放地图级别时,多边形大小保持不变
思路:要在屏幕的视觉上使得绘制的多边形不随地图缩放变化而变化,换个思路就是显示的效果不变。由于使用leaflet绘制多边形需要提供经纬度,所以分为以下步骤:
第一步:将一个经纬度转换成像素点坐标(注意只需要一个经纬度即可)
第二步:再将转化后的像素点分别加减你所需要的显示像素大小,大约绘制成你想要的的现状。比如三角形,就加减有三个像素点
第三步:最后将加减后的三个像素点坐标分别再次转化回经纬度(注意这里已经是三个经纬度了)
第四步:将以上转化完成的三个经纬度使用leaflet的API将它们连接绘制成三角形或者多边形
具体API建议查看官网,以下部分截图:
在这里插入图片描述
个人实践代码参考:

// An highlighted block
// 将经纬度[getlats[i], getlngs[i]]转换成像素点坐标
var pixel = this.map.latLngToContainerPoint([getlats[i], getlngs[i]]);
//3个点的像素坐标
var polygond = [
    { x: pixel.x - 6, y: pixel.y + 12 }, //1
    { x: pixel.x + 6, y: pixel.y + 12 }, //2
    { x: pixel.x, y: pixel.y - 15 }, //3 
   ];
//像素坐标转换地理坐标
var geo_polygon = [];
for (var v of polygond) {
   geo_polygon.push(this.map.containerPointToLatLng(v));
}
var polygon = L.polygon(
   [
      [geo_polygon[0].lat, geo_polygon[0].lng],
      [geo_polygon[1].lat, geo_polygon[1].lng],
      [geo_polygon[2].lat, geo_polygon[2].lng],
   ],
    {
      color: "green",
      fillColor: "yellow",
      fillOpacity: 1,
      weight: 1,
    }
).addTo(this.map)

注意:以上仅提供思路和代码参考

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值