要实现“agm-snazzy-info-window 以随机位置显示”的效果,你可以按以下步骤进行操作:
首先,安装 agm-snazzy-info-window
插件。可以使用以下命令进行安装:
npm install agm-snazzy-info-window --save
在你的 Angular 组件中导入 agm-snazzy-info-window
模块,并在需要显示 info window 的地图上使用该组件。例如:
import { Component } from '@angular/core';
import { Marker } from 'agm-map';
@Component({
selector: 'app-map',
template: `
{{ marker.info }}
`,
})
export class MapComponent {
lat = 51.678418;
lng = 7.809007;
zoom = 12;
markers: Marker[] = [
{
lat: 51.678418,
lng: 7.809007,
label: 'A',
info: 'Info A',
showInfo: false,
},
{
lat: 51.678418,
lng: 7.809007,
label: 'B',
info: 'Info B',
showInfo: false,
},
// 添加其他 marker
];
}
在组件的 TypeScript 代码中,你可以使用 Math.random()
方法来生成随机位置的经纬度坐标,然后将这些坐标应用在 markers 数组中的每个 marker 上。例如:
import { Component } from '@angular/core';
import { Marker } from 'agm-map';
@Component({
selector: 'app-map',
template: `
`,
})
export class MapComponent {
// 省略其他代码
generateRandomCoordinates(): number {
// 最小和最大的经度和纬度范围
const minLat = -90;
const maxLat = 90;
const minLng = -180;
const maxLng = 180;
// 生成随机经纬度
const randomLat = Math.random() * (maxLat - minLat) + minLat;
const randomLng = Math.random() * (maxLng - minLng) + minLng;
return randomLat;
}
generateRandomMarkers(numMarkers: number): void {
this.markers = [];
for (let i = 0; i < numMarkers; i++) {
const randomLat = this.generateRandomCoordinates();
const randomLng = this.generateRandomCoordinates();
this.markers.push({
lat: randomLat,
lng: randomLng,
label: String.fromCharCode(65 + i), // 使用字母标记每个 marker
info: 'Info ' + String.fromCharCode(65 + i),
showInfo: false,
});
}
}
ngOnInit(): void {
this.generateRandomMarkers(5); // 生成 5 个随机位置的 markers
}
}
通过以上代码,你可以在地图上显示使用 agm-snazzy-info-window
的 markers,并将它们的位置设置为随机生成的经纬度坐标。每个 marker 都有一个对应的 info window,当点击 marker 时,对应的 info window 会显示在该 marker 的位置上。