This commit is contained in:
Taric Xin
2021-12-15 20:06:47 +08:00
parent fbad9c32d8
commit 7f65ee67ec
2 changed files with 39 additions and 28 deletions

View File

@ -22,6 +22,9 @@ export class AmapPoiPickerComponent implements OnInit {
aMap: any;
poi: any;
marker: any;
infoWindow: any;
geocoder: any;
constructor(private modalRef: NzModalRef) {}
ngOnInit(): void {
@ -75,6 +78,12 @@ export class AmapPoiPickerComponent implements OnInit {
this.aMap.on('complete', () => {
this.poiPickerReady(poiPicker);
});
this.aMap.on('click', (e: any) => {
console.log(e);
this.selectedPOI(e.lnglat);
});
})
.catch(e => {
throwError(e);
@ -86,7 +95,7 @@ export class AmapPoiPickerComponent implements OnInit {
(window as any).poiPicker = poiPicker;
const map = this.aMap;
// 定位标志
const marker = new AMapUI.SimpleMarker({
this.marker = new AMapUI.SimpleMarker({
//图标主题
iconTheme: 'default',
map: map,
@ -94,41 +103,41 @@ export class AmapPoiPickerComponent implements OnInit {
});
// 信息窗口
const infoWindow = new AMap.InfoWindow({
this.infoWindow = new AMap.InfoWindow({
offset: new AMap.Pixel(0, -20)
});
this.geocoder = new AMap.Geocoder({
city: '010', //城市设为北京,默认:“全国”
radius: 1000 //范围默认500
});
//选取了某个POI
poiPicker.on('poiPicked', (poiResult: any) => {
const source = poiResult.source,
poi = poiResult.item;
this.poi = poi;
marker.setMap(map);
infoWindow.setMap(map);
marker.setPosition(poi.location);
infoWindow.setPosition(poi.location);
infoWindow.setContent(`地址: <pre>${poi.name}</pre>`);
infoWindow.open(map, marker.getPosition());
map.setCenter(marker.getPosition());
//获取地址所在的行政区
AMap.plugin('AMap.Geocoder', () => {
var geocoder = new AMap.Geocoder({
city: poi.adcode
});
geocoder.getLocation(poi.name, (status: any, result: any) => {
if (status === 'complete' && result.info === 'OK') {
// result中对应详细地理坐标信息
this.poi.cityInfo = result.geocodes[0].addressComponent;
}
});
});
this.marker.setMap(map);
this.infoWindow.setMap(map);
this.selectedPOI(poi.location);
});
}
// poiPicker.onCityReady(function () {
// poiPicker.suggest('美食');
// });
selectedPOI(location: any) {
this.marker.setPosition(location);
this.geocoder.getAddress([location.KL, location.kT], (status: any, result: any) => {
if (status === 'complete' && result.info === 'OK') {
// result中对应详细地理坐标信息
result.regeocode.pois = [location.KL, location.kT];
this.poi = result.regeocode;
// console.log(this.poi);
this.infoWindow.setContent(`地址: <pre>${result.regeocode.formattedAddress}</pre>`);
this.infoWindow.open(this.aMap, this.marker.getPosition());
this.infoWindow.setPosition(location);
this.aMap.setCenter(location);
}
});
}
closeInfoWindow() {

View File

@ -58,7 +58,8 @@ import {
SwapOutline,
EyeFill,
EyeInvisibleFill,
SolutionOutline
SolutionOutline,
MinusCircleOutline
} from '@ant-design/icons-angular/icons';
export const ICONS_AUTO = [
@ -116,5 +117,6 @@ export const ICONS_AUTO = [
EyeFill,
EyeInvisibleFill,
SwapOutline,
SolutionOutline
SolutionOutline,
MinusCircleOutline
];