Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Leaflet 在传单L.circle()函数创建的圆上添加文本_Leaflet - Fatal编程技术网

Leaflet 在传单L.circle()函数创建的圆上添加文本

Leaflet 在传单L.circle()函数创建的圆上添加文本,leaflet,Leaflet,我使用以下函数在传单地图上的单击点周围创建一系列圆圈。我希望通过将距离(r或半径)放置在圆线本身上来标记每个圆。但我找不到任何选项或功能来实现这一点。有人能告诉我怎么做吗 function circleKoords(e) { var myJSON = JSON.stringify(e.latlng); //alert("myJSON "+myJSON); // myJSON {"lat":39.257778150283364,"lng":-94.4192504882812

我使用以下函数在传单地图上的单击点周围创建一系列圆圈。我希望通过将距离(r或半径)放置在圆线本身上来标记每个圆。但我找不到任何选项或功能来实现这一点。有人能告诉我怎么做吗

function circleKoords(e) {

   var myJSON = JSON.stringify(e.latlng); 
   //alert("myJSON "+myJSON); 
   // myJSON {"lat":39.257778150283364,"lng":-94.41925048828126}
   // myJSON {"lat":39.39587712612034,"lng":-93.54583740234376}

   var LatLng = e.latlng;
   var lat = e.latlng["lat"]; //alert(lat);  // 39.172658670429946
   var lng = e.latlng["lng"]; //lert(lng);

   var i;
   var r = 1609.34;  // in meters = 1 mile, 4,828.03 meters in 3 miles
   //https://jsfiddle.net/3u09g2mf/2/   
   //https://gis.stackexchange.com/questions/240169/leaflet-onclick-add-remove-circles
   var group1 = L.featureGroup(); // Allows us to group the circles for easy removal

   var circleOptions = {
       color: 'blue',
       fillColor: '#69e',
       fillOpacity: 0.1
   }  

   var milesbetween = 0; var numberofrings = 0;  

   var milesbetween = prompt("How many miles between circles?");
        if (milesbetween <= 0) {milesbetween = 1;}
   var numberofrings = prompt("How many circles do you want to see?");
        if (numberofrings <= 0) {numberofrings = 5;}


   // The actual circles are created here at the var Cname =
   for (i=0 ; i < numberofrings; i++ ) {
       var Cname = 'circle'+i; //alert(Cname);  // circle0, circle1, circle2, etc.
       r = (r * i) + r; r=r*milesbetween;
        //alert(lat+", "+lng);  // lat and lng of clicked point.
        //alert('r= '+r); // r= 1609.34, r= 3218.68, r= 4828.0199999999995, etc. up to the number of rings
       var Cname = L.circle([lat, lng], r, circleOptions);
            Cname.addTo(group1); 
          //  r = 1609.34;  // reset r so r calculation above works for each 1 mile step 
          map.addLayer(group1);
        r = 1609.34;
    }

    alert("All "+numberofrings+" rings are "+milesbetween+" mile apart.");

    // This part allows us to delete the circles by simply clicking anywhere in the circles.
    group1.on('click', function() {
        if(map.hasLayer(group1)) {map.removeLayer(group1);}
        //else {map.addLayer(group1);}
    });
}
函数循环库(e){
var myJSON=JSON.stringify(e.latlng);
//警报(“myJSON”+myJSON);
//myJSON{“lat”:39.257778150283364,“液化天然气”:-94.419250488282126}
//myJSON{“lat”:39.39587712612034,“lng”:-93.5458374023476}
var LatLng=e.LatLng;
var lat=e.latlng[“lat”];//警报(lat);//39.172658670429946
var lng=e.latlng[“lng”];//lert(lng);
var i;
var r=1609.34;//以米为单位=1英里,以4828.03米为单位=3英里
//https://jsfiddle.net/3u09g2mf/2/   
//https://gis.stackexchange.com/questions/240169/leaflet-onclick-add-remove-circles
var group1=L.featureGroup();//允许我们对圆进行分组,以便于删除
变量循环次数={
颜色:“蓝色”,
填充颜色:'#69e',
填充不透明度:0.1
}  
var milesbetween=0;var numberofrings=0;
var milesbetween=提示(“圆圈之间有多少英里?”);

如果(milesbetween你能试着把它放在“var Cname=L.circle([lat,lng],r,circleOptions);”之后吗?这会尝试在相同的坐标中添加一个标签,文本“radius”后跟计算出的半径值

var label = L.marker([lat, lng], {
   icon: L.divIcon({
     className: 'label',
     html: `radius ${r}`,
     iconSize: [0, 0]
    })
  });
  label.addTo(group1);

添加L.GeometryUtil库:

<script src="https://cdn.jsdelivr.net/npm/leaflet-geometryutil@0.9.1/src/leaflet.geometryutil.min.js"></script>

// The actual circles are created here at the var Cname =
   for (i=0 ; i < numberofrings; i++ ) {
       var Cname = 'circle'+i; //alert(Cname);  // circle0, circle1, circle2, etc.
       r = (r * i) + r; r=r*milesbetween;
        //alert(lat+", "+lng);  // lat and lng of clicked point.
        //alert('r= '+r); // r= 1609.34, r= 3218.68, r= 4828.0199999999995, etc. up to the number of rings
       var Cname = L.circle([lat, lng], r, circleOptions);
            Cname.addTo(group1); 
          mymap.addLayer(group1);
         //180° from top
         var p_c = L.GeometryUtil.destination(L.latLng([lat, lng]),180,r);
         var icon = L.divIcon({ className: 'dist-marker', html: r.toFixed(0)+';iles', iconSize: [null, 16] });
             var marker = L.marker(p_c, { title: r.toFixed(0)+'Miles', icon: icon});
         marker.addTo(mymap);
          //  r = 1609.34;  // reset r so r calculation above works for each 1 mile step 
        r = 1609.34;
    }
.dist-marker {
    margin-left: -8px !important;
    font-size: 9px;
    border: 1px solid #777;
    border-radius: 10px;
    text-align: center;
    color: #000;
    background: #fff;
    padding: 0 3px;
}