Leaflet 如果传单地图中半径为3 km的圆圈内有两个移动标记,如何更改两个圆圈的颜色
我已经创建了两个3公里的圆圈,中心来自后端,我已经创建了移动标记,其纬度和经度如下所示(var x,var y) 我的要求是,如果两个标记中的任何一个进入任何一个圆圈,圆圈的颜色应该变成红色,如果它在圆圈外,应该变成蓝色 我已经试过了,但是颜色改变只对一个圆圈有效 .component.tsLeaflet 如果传单地图中半径为3 km的圆圈内有两个移动标记,如何更改两个圆圈的颜色,leaflet,openstreetmap,leaflet.draw,angular-leaflet-directive,leaflet.markercluster,Leaflet,Openstreetmap,Leaflet.draw,Angular Leaflet Directive,Leaflet.markercluster,我已经创建了两个3公里的圆圈,中心来自后端,我已经创建了移动标记,其纬度和经度如下所示(var x,var y) 我的要求是,如果两个标记中的任何一个进入任何一个圆圈,圆圈的颜色应该变成红色,如果它在圆圈外,应该变成蓝色 我已经试过了,但是颜色改变只对一个圆圈有效 .component.ts map = L.map('map').setView([12.78,80.79], 12); this.drones.drone1.Drone.latlong[0].lon], 12);
map = L.map('map').setView([12.78,80.79], 12);
this.drones.drone1.Drone.latlong[0].lon], 12);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
var x = {
"Drone": {
"Droneid": 1001,
"latlong": [
{
"lat": 12.957052,
"lon": 80.241433
},
{
"lat": 12.95379,
"lon": 80.230627
},
//some array of objects of lat,lon
]
}
}
var y = {
"Drone": {
"Droneid": 1002,
"latlong": [
{
"lat": 12.9516,
"lon": 80.1462
},
//some array of objects of lat,lon
]
}
}
TIME = 2500;
var latlngs = x.Drone.latlong;
var START_IDX = 1;
var latlngIdx = START_IDX;
var marker;
var droneicon;
var droneicon2;
var latlngs02 = y.Drone.latlong;
var START_IDX02 = 1;
var latlngIdx02 = START_IDX02;
for(var i=0;i<this.sensors.length; i++ ){
var latlng = L.latLng(this.sensors[i].latitude, this.sensors[i].longitude)
var latlng02 = L.latLng(this.jammers[i].latitude, this.jammers[i].longitude)
marker = L.marker(latlng, { icon: sensoricon }).addTo(map);
marker = L.marker(latlng02, { icon: jammericon }).addTo(map);
circlemark = L.circle(latlng, { radius: 5000, weight: 0 }).addTo(map);
}
droneicon = L.marker([x.Drone.latlong[0].lat,x.Drone.latlong[0].lon], {icon : myIcon}).addTo(map);
var nextLatLng = () =>{
if(droneicon){
if(latlngIdx === latlngs.length){
latlngIdx = START_IDX;
}
droneicon.setLatLng(latlngs[latlngIdx]);
for (var i=0; i< this.sensors.length;i++){
if (getDistanceFromLatLonInKm(this.sensors[i].latitude, this.sensors[i].longitude, latlngs[latlngIdx].lat,latlngs[latlngIdx].lon) <= 5.0) {
circlemark.setStyle({ color: 'red', weight: 1, opacity: 7.0 });
}
else {
circlemark.setStyle({ color: 'blue', weight: 1, opacity: 7.0 });
}
}
//insidecirclespace();
latlngIdx++;
setTimeout(nextLatLng,TIME);
}
}
nextLatLng();
//testing
droneicon2 = L.marker([y.Drone.latlong[0].lat,y.Drone.latlong[0].lon], {icon : myIcon}).addTo(map);
var nextLatLng2 = () =>{
if(droneicon2){
if(latlngIdx02 === latlngs02.length){ // Beginn on idx 2 if last idx is reached
latlngIdx02 = START_IDX02;
}
droneicon2.setLatLng(latlngs02[latlngIdx02]);
for (var i=0; i< this.sensors.length;i++){
if (getDistanceFromLatLonInKm(this.sensors[i].latitude, this.sensors[i].longitude, latlngs02[latlngIdx02].lat,latlngs02[latlngIdx02].lon) <= 5.0) {
circlemark.setStyle({ color: 'red', weight: 1, opacity: 7.0 });
}
else {
circlemark.setStyle({ color: 'blue', weight: 1, opacity: 7.0 });
}
}
//insidecirclespace();
latlngIdx02++;
setTimeout(nextLatLng2,TIME);
}
}
nextLatLng2();
map=L.map('map').setView([12.78,80.79],12);
this.drones.drone1.Drone.latlong[0].lon],12);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
归属:“©贡献者”
}).addTo(地图);
变量x={
“无人机”:{
“无人机”:1001,
“拉特朗”:[
{
“lat”:12.957052,
“lon”:80.241433
},
{
“lat”:12.95379,
“lon”:80.230627
},
//lat,lon的一些对象数组
]
}
}
变量y={
“无人机”:{
“无人机”:1002,
“拉特朗”:[
{
“lat”:12.9516,
“lon”:80.1462
},
//lat,lon的一些对象数组
]
}
}
时间=2500;
var latlngs=x.Drone.latlong;
var START_IDX=1;
var latlngIdx=开始_IDX;
var标记;
无人机图标;
var droneicon2;
var latlngs02=y.Drone.latlong;
var START_IDX02=1;
var latlngIdx02=启动_IDX02;
对于(var i=0;i{
如果(无人机图标){
if(latlngIdx==latlngs.length){
latlngIdx=开始_IDX;
}
droneicon.setLatLng(latlngs[latlngIdx]);
对于(var i=0;i if(getDistanceFromLatLonInKm(this.sensors[i]。纬度,this.sensors[i]。经度,latlngs02[latlngIdx02]。lat,latlngs02[latlngIdx02]。lon)我试过几种方法,但如果有移动的标记进入圆圈内,我仍然会改变圆圈的颜色。有人能帮我获取上述代码吗?我对这张传单地图不熟悉。