Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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
Javascript 如何在单张开放式街道地图中使用角坐标放置半径为5KM、纬度和经度来自API的圆_Javascript_Angular_Typescript_Leaflet - Fatal编程技术网

Javascript 如何在单张开放式街道地图中使用角坐标放置半径为5KM、纬度和经度来自API的圆

Javascript 如何在单张开放式街道地图中使用角坐标放置半径为5KM、纬度和经度来自API的圆,javascript,angular,typescript,leaflet,Javascript,Angular,Typescript,Leaflet,在我的angular项目中,我使用单张开放街道地图放置了地图。我必须放置半径为5km的圆圈,其纬度和经度来自API。但我无法放置圆圈 我已经从API获取了Json数组,如下所示: "Drone": { "Droneid": 1001, "latlong": [ { "lat": 12.989839, "lon": 80

在我的angular项目中,我使用单张开放街道地图放置了地图。我必须放置半径为5km的圆圈,其纬度和经度来自API。但我无法放置圆圈

我已经从API获取了Json数组,如下所示:

"Drone": {
    "Droneid": 1001,
    "latlong": [
        {
            "lat": 12.989839,
            "lon": 80.198822
        },
        {
            "lat": 13.051832,
            "lon": 80.194480
        },
        {
            "lat": 13.038453,
            "lon": 80.227442
        },
        {
            "lat": 13.009018,
            "lon": 80.242550
        },
        {
            "lat": 12.976903,
            "lon": 80.237056
        },
        {
            "lat": 12.956829,
            "lon": 80.193107
        },
        {
            "lat": 12.980917,
            "lon": 80.150531
        },
        {
            "lat": 13.007680,
            "lon": 80.149158
        },
        {
            "lat": 13.043805,
            "lon": 80.154651
        }
    ]
}
}
从latlong数组元素(lat,lon)中,我必须放置半径为5 km的圆,索引为0的元素(即第一个lat,lon值),其余元素放置在圆内

仪表板.component.ts

  constructor(private ds:DashboardService,private router: Router) { }
Drones:any;
  Droneid:string;
  latlong:any=[];
Drone:any;
var  map = L.map('map').setView([13.0827, 80.2707], 8);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
 attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
} ).addTo(map);
L.circle([this.drones.Drone.latlong.lat[0],this.drones.Drone.latlong.lon[0]],{radius:5000}).addTo(map);
我已经试过了,但没有在地图上显示任何圆圈。有人能帮我解决这个问题吗。

试试:

L.circle([this.drones.Drone.latlong[0].lat,this.drones.Drone.latlong[0].lon],{radius:5000}).addTo(map);
而不是:

L.circle([this.drones.Drone.latlong.lat[0],this.drones.Drone.latlong.lon[0]],{radius:5000}).addTo(map);
您需要
latlong
数组中的第一个元素

更新

this.drones.Drone.latlong.forEach((latlong, idx)=>{
    var latlng = L.latLng(latlong.lat,latlong.lon)
  if(idx === 0){
    L.circle(latlng,{radius:5000}).addTo(map);
  }else{
    L.marker(latlng).addTo(map)
  }
})

谢谢,为我工作,你能帮我把剩下的纬度和经度放在地图的圆圈内吗?非常感谢@Falke Design,它对我来说工作得很好。我还有一个疑问,我已经用第二个latlong对象放置了无人机图标,剩下的我已经在圆圈中放置了标记。我的任务是每1ms将无人机图标从一个纬度、经度移动到另一个坐标。你能帮我解决这个问题吗。看
this.drones.Drone.latlong.forEach((latlong, idx)=>{
    var latlng = L.latLng(latlong.lat,latlong.lon)
  if(idx === 0){
    L.circle(latlng,{radius:5000}).addTo(map);
  }else{
    L.marker(latlng).addTo(map)
  }
})