[英]How do I bind a pop-up to each element of a FeatureCollection coming in as a GET request response from back-end API?
Answer from back end comes back like this:后端的回答是这样的:
POSTMAN answer to GET REQUEST POSTMAN 回答 GET REQUEST
I have a service method that sends the GET request to the back-end API.我有一个向后端API发送GET请求的服务方法。
export class PowerPlantService {
constructor(private http: HttpClient) { }
getAll() {
return this.http.get(baseUrl);
}
In the component, I create a service variable and call that GET method and subscribe to the result (data).在组件中,我创建了一个服务变量并调用该 GET 方法并订阅了结果(数据)。 Then I add the data (which is a feature collection as seen in the picture above) to the map. Final line of code below.然后我将数据(如上图所示是一个特征集合)添加到 map。下面的最后一行代码。
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
//coordinates for Brasov
private latitude: number = 45.6427;
private longitude: number = 25.5887;
private tiles?: any;
private geoJsonFeature?: any;
private map!: L.Map;
private centroid: L.LatLngExpression = [this.latitude, this.longitude];
ngOnInit(): void {
this.initMap();
}
constructor(private powerPlantService: PowerPlantService) {
}
private initMap(): void {
this.map = L.map('map', {
center: this.centroid,
zoom: 2.8
});
this.tiles = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
{
minZoom: 2.8,
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
});
this.tiles.addTo(this.map);
this.powerPlantService.getAll().subscribe((data: any)=>{
console.log(data);
this.geoJsonFeature = data;
L.geoJSON(data).addTo(this.map)
})
This is how the pins are displayed on the map, this is just an example for reference. map 上的管脚是这样显示的,仅供参考。
I have tried to find a way to bind a pop-up activated on click for each pin of the feature collection which displays the properties of each Feature from the FeatureCollection but I can't find a tutorial anywhere.我试图找到一种方法来绑定在单击功能集合的每个引脚时激活的弹出窗口,该弹出窗口显示 FeatureCollection 中每个功能的属性,但我无法在任何地方找到教程。
After trial and error, I have found a way:经过反复试验,我找到了一种方法:
Here are some details about the onEachFeature but it's not very relevant to be honest, the documentation is rather disappointing if you are a beginner. 这里有一些关于 onEachFeature 的细节,但老实说它不是很相关,如果你是初学者,文档会相当令人失望。
this.powerPlantService.getAll().subscribe((data: any)=>{
console.log(data);
this.geoJsonFeature = data;
L.geoJSON(data, {onEachFeature: myOnEachFeatureMethod}).addTo(this.map)
})
function myOnEachFeatureMethod(feature: any, layer:any)
{
layer.bindPopup(***the feature attributes you want to display go here*** );
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.