Angular-google-maps: AGM mapClick ($ event) tidak bekerja dengan baik

Dibuat pada 24 Jul 2020  ·  20Komentar  ·  Sumber: SebastianM/angular-google-maps

Saya membuat tutorial Memulai RUPS: https://angular-maps.com/guides/getting-started/

Saya telah menginstal:
"@ sudut / inti": "~ 10.0.0"
dan
"@ agm / core": "^ 3.0.0-beta.0"

Di app.component.html saya menambahkan:


Di app.component.ts saya menambahkan:
ekspor kelas AppComponent {
title = 'gbis';
lat = 51.678418;
lng = 7.809007;

mapClick(e) {
    console.log(e);
}

}

Di app.component.css saya menambahkan:
agm-map {
tinggi: 300px;
}

Ketika saya menjalankan aplikasi ini, peta berfungsi tetapi jika saya mengklik peta dalam fungsi file TS mapClick (e) saya menerima e = "c". Tidak ada koordinat yang diterima dari parameter e.

tolong bantu!

urgent bug

Komentar yang paling membantu

Sebagai solusinya, Anda dapat menambahkan pendengar ke contoh peta google

<agm-map [latitude]="position.lat"
         [longitude]="position.lng"
         [zoom]="zoom"
         (mapReady)="mapReadyHandler($event)">
</agm-map>
public mapReadyHandler(map: google.maps.Map): void {
  this.map = map;
  this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
    this.zone.run(() => {
      // Here we can get correct event
      console.log(e.latLng.lat(), e.latLng.lng());
    });
  });
}

public ngOnDestroy(): void {
  if (this.mapClickListener) {
    this.mapClickListener.remove();
  }
}

Semua 20 komentar

ETA tentang perbaikan ini? atau solusi?

Saya mengalami masalah yang persis sama.

Adakah yang bisa memperbaiki masalah ini?

masalah yang sama, harus menggunakan versi yang lebih lama untuk mengatasinya?

Adakah yang bisa memperbaiki masalah ini?

Adakah yang bisa memperbaiki masalah ini?

Saya menyarankan untuk menggunakan versi lama untuk saat ini, karena bug ini sangat penting, meniadakan interaksi dasar dengan peta

Adakah yang bisa memperbaiki masalah ini?

Saya menyarankan untuk menggunakan versi lama untuk saat ini, karena bug ini sangat penting, meniadakan interaksi dasar dengan peta

Ya, versi sebelumnya 1.1.0 (8 bulan yang lalu) berfungsi dengan baik.

perbaikan sederhana di # 1847, menunggu review dari @SebastianM

Saya menghadapi masalah yang sama. $ event di mapClick mengembalikan string "c". Ada ide kapan ini akan diperbaiki? Ada solusi lain selain beralih ke versi yang lebih lama?

Sebagai solusinya, Anda dapat menambahkan pendengar ke contoh peta google

<agm-map [latitude]="position.lat"
         [longitude]="position.lng"
         [zoom]="zoom"
         (mapReady)="mapReadyHandler($event)">
</agm-map>
public mapReadyHandler(map: google.maps.Map): void {
  this.map = map;
  this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
    this.zone.run(() => {
      // Here we can get correct event
      console.log(e.latLng.lat(), e.latLng.lng());
    });
  });
}

public ngOnDestroy(): void {
  if (this.mapClickListener) {
    this.mapClickListener.remove();
  }
}

Adakah yang bisa memperbaiki masalah ini?

Saya menyarankan menggunakan versi lama untuk saat ini, karena bug ini sangat penting, menyangkal interaksi dasar dengan peta

Ya, versi yang lebih lama 1.1.0 (8 bulan yang lalu) berfungsi dengan baik.

Jika berfungsi dengan versi 1.1.0, gunakan perintah npm i @ agm / [email protected]

Kapan ini akan dirilis?

Mengalami masalah yang sama di "@ agm / core": "^ 3.0.0-beta.0"

@ egorkel-da14 Saya mencoba solusi Anda tetapi mendapatkan pesan ini:
Uncaught TypeError: Cannot read property 'run' of undefined
saat menelepon this.zone.run(...)

Apakah saya melewatkan sesuatu di sini?

update: Sepertinya saya bisa mendapatkan koordinat saat menghilangkan garis itu:

    public mapReadyHandler(map: google.maps.Map): void {
        this.map = map;
        this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
            console.log(e.latLng.lat(), e.latLng.lng());
        });
    }

@ egorkel-da14 Saya mencoba solusi Anda tetapi mendapatkan pesan ini:
Uncaught TypeError: Cannot read property 'run' of undefined
saat menelepon this.zone.run(...)

Apakah saya melewatkan sesuatu di sini?

update: Sepertinya saya bisa mendapatkan koordinat saat menghilangkan garis itu:

    public mapReadyHandler(map: google.maps.Map): void {
        this.map = map;
        this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
            console.log(e.latLng.lat(), e.latLng.lng());
        });
    }

Iya :)
Anda perlu menyuntikkan layanan NgZone ke konstruktor

constructor(private zone: NgZone) {}

Anda memerlukan baris ini untuk pekerjaan yang tepat dari deteksi perubahan sudut (untuk pembaruan tampilan yang tepat)
@paul

panggil event.latLng.lat () working
markerDragEnd ($ event: any) {
console.log ($ event.latLng.lat (), $ event.latLng.lng ());
}

Saya memiliki masalah yang sama dengan fungsi addPin, tetapi saya perlu menggunakan versi 3.0.0 untuk menerjemahkan peta sesuai dengan lokal pengguna. Jadi yang perlu saya ketahui adalah versi dengan terjemahan dan fungsi menambahkan pin diterbitkan sebelumnya atau tidak? (karena di versi 1.1.0 terjemahan masih belum tersedia)

Adakah yang bisa memperbaiki masalah ini?

Saya menyarankan menggunakan versi lama untuk saat ini, karena bug ini sangat penting, menyangkal interaksi dasar dengan peta

Ya, versi yang lebih lama 1.1.0 (8 bulan yang lalu) berfungsi dengan baik.

Jika berfungsi dengan versi 1.1.0, gunakan perintah npm i @ agm / [email protected]

Dengan Angular 10?

Sebagai solusinya, Anda dapat menambahkan pendengar ke contoh peta google

<agm-map [latitude]="position.lat"
         [longitude]="position.lng"
         [zoom]="zoom"
         (mapReady)="mapReadyHandler($event)">
</agm-map>
public mapReadyHandler(map: google.maps.Map): void {
  this.map = map;
  this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
    this.zone.run(() => {
      // Here we can get correct event
      console.log(e.latLng.lat(), e.latLng.lng());
    });
  });
}

public ngOnDestroy(): void {
  if (this.mapClickListener) {
    this.mapClickListener.remove();
  }
}

Terima kasih banyak untuk kode ini, sangat membantu, semoga harimu menyenangkan

Apakah halaman ini membantu?
0 / 5 - 0 peringkat