首页 > 解决方案 > 如何在传单中的多边形内获得一个圆圈

问题描述

使用以下文档在多边形内创建多边形非常简单:https ://leafletjs.com/reference-1.7.1.html#polygon 。有人可以帮我在多边形内创建一个圆圈(不是任何其他形式的孔,而是一个圆圈)。

这是多边形内多边形的代码:

var coordinates1 =
        [
          [
            56.161106946516895,
            10.19885912840232
            ],
             [
            56.16109132206879,
            10.200468870423682
            ],
           [
            56.16019304847142,
            10.200440852823863
            ],
           [
            56.16020867239298,
            10.19883114835013
            ],
            [
              56.161106946516895,
              10.19885912840232
              ],
      ];

     const coor2 = [

      [
        56.11952933994325,
        9.996528625488281,
      ],
      [
        56.11952933994325,
        10.204582214355469
      ],
      [
        56.18015197042245,
        10.204582214355469,
      ],
      [
        56.18015197042245,
        9.996528625488281,
      ],
      [
        56.11952933994325,
        9.996528625488281,
      ]
     ];

var lat = 56.16065;
var lng =  10.19965;
var zoom =  18;

var map = new L.Map('map');

var osmUrl='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var osmAttrib='Map data © OpenStreetMap contributors';
var osm = new L.TileLayer(osmUrl, {minZoom: 3, maxZoom: 8, attribution: osmAttrib});
map.addLayer(osm);

map.setView(new L.LatLng(lat, lng), zoom);

// transform geojson coordinates into an array of L.LatLng

var latLngs1 = [];
var latLngs2 = [];
for (i=0; i<coordinates1.length; i++) {
    latLngs1.push(new L.LatLng(coordinates1[i][0], coordinates1[i][1]));
}
for (i=0; i<coor2.length; i++) {
    latLngs2.push(new L.LatLng(coor2[i][0], coor2[i][1]));
}

var ll  = [latLngs2, latLngs1];
var polygon = L.polygon(ll, {color: 'red'}).addTo(map);

多边形内多边形的 JSfiddle 示例在这里:http: //jsfiddle.net/fojdcy1a/

标签: leafletpolygon

解决方案


推荐阅读