Angular-google-maps: peristiwa klik agm-marker-cluster diteruskan ke agm-map

Dibuat pada 29 Des 2018  ·  27Komentar  ·  Sumber: SebastianM/angular-google-maps

Hai.

Perpustakaan yang bagus.

Saya memiliki masalah kecil yang menurut saya harus ditandai sebagai bug sehubungan dengan penanganan acara klik di agm-marker-cluster.

Untuk agm-marker, peristiwa klik TIDAK diteruskan ke agm-map tetapi untuk marker yang mewakili cluster, peristiwa klik diteruskan ke agm-map.

Ini menyebabkan masalah bagi saya karena saya memiliki penangan klik pada peta yang TIDAK ingin saya jalankan saat mengklik penanda dan ini harus menyertakan penanda cluster.

Apakah ada yang bisa saya beri tahu pembuat cluster untuk tidak meneruskan acara di rantai ke agm-map ???

Saya menyadari bahwa peristiwa klik pada penanda klaster memiliki perilaku default, yang saya inginkan yaitu peta pusat berdasarkan klaster dan memperbesar untuk yang terbaik bagi pembuat di klaster yang diklik.

Masalah utama saya adalah bahwa saya memiliki acara klik di peta yang melakukan fungsi lain dan saya pasti TIDAK ingin ini dieksekusi ketika mengklik penanda APAPUN, termasuk penanda cluster.

Salam

Steve

PRs welcome! MarkerClusterer stale

Komentar yang paling membantu

Hai @doom777 , @SebastianM

Saya telah membuat permintaan tarik #1877 untuk masalah klik klaster.

Hargai jika Anda dapat segera menyetujui dan merilis di versi berikutnya.

Karena node_modules semakin dihapus setiap kali kami menerapkan, kami tidak dapat mengubah secara manual, meminta Anda untuk segera merilisnya.

Salam,
Surendra

Semua 27 komentar

Masalah yang sama di sini. Sudahkah Anda menemukan solusi?

Saya memiliki masalah yang sama juga.

Bump, masalah yang sama

Apakah ada solusi untuk ini?

@ruisilva450 Anda menemukan solusinya?

@ruisilva450 Anda menemukan solusinya?

Tidak.
Saya memiliki situasi yang dapat saya atasi karena saya harus membuat daftar beberapa titik yang berada di titik yang sama (lat yang sama, lng untuk beberapa titik).
Jadi saya hanya melakukan pra-kelompok titik-titik itu dan menggunakan properti untuk menunjukkan pin yang berbeda dengan jumlah item yang ada di titik yang sama. Cara ini hanya penanda biasa dan mengkliknya saya bisa mendapatkan daftar item yang dikelompokkan dalam koordinat penanda itu.

Tidak benar-benar solusi untuk kasus penggunaan masalah ini, maaf.

apakah Anda yakin itu berlaku untuk peta? Mungkin itu hanya properti zoomOnClick?

Saya sudah mencoba acara klik klaster seperti yang saya lakukan di stackblitz([https://stackblitz.com/edit/angular-tst926]), untuk beberapa alasan klik berfungsi tetapi parameter $event tidak ditentukan. Setidaknya di stackblitz acara klik dipicu tetapi dalam aplikasi saya yang sebenarnya tidak.

@doom777 , Mengapa acara clusterClick berperilaku aneh dalam sampel yang dibuat di tautan stackblitz: clusterClick

@doom777 , apakah Anda ingin mengangkat masalah baru karena acara clusterClick sedang dicatat sebagai "tidak terdefinisi", hal yang sama dapat diverifikasi dari stackblitz: clusterClick

Lalu bagaimana cara mendapatkan detail marker yang tersedia di cluster tertentu menggunakan clusterClick? apakah fitur ini belum diimplementasikan?

Nah, Anda menempatkan penanda di cluster berdasarkan data, jadi Anda bisa menggunakan data yang sama

<agm-marker-cluster (clusterClick)="clusterClicked(allInstes)">
  <agm-marker *ngFor="inst of allInstes" [latitude]="inst.lat" [longitude]="inst.long"></agm-marker>
</agm-marker-cluster>

@malapetaka777

Nah, Anda menempatkan penanda di cluster berdasarkan data, jadi Anda bisa menggunakan data yang sama

Anda meneruskan fungsi allInstes ke clusterClicked(), tetapi bagaimana cara mendapatkan penanda di cluster tertentu? Dalam kasus Anda, Anda mendapatkan semua penanda.

Bagaimana cara mengambil nilai pada acara klik klaster, yang berada di bawah posisi yang sama?

pembaruan apa pun pada acara klik cluster, ketika acara klik diaktifkan, saya harus bisa mendapatkan semua data yang ada di cluster.

bersama dengan itu, tolong sarankan bagaimana cara memperbarui nilai minimumClusterSize secara dinamis?
Saya mencoba mengubah ukuran ukuran cluster pada acara zoomChange, tetapi tidak berhasil.
Ada saran?

@malapetaka777 ,

Saya telah men-debug perpustakaan dari node_modules dari mana klik cluster dimasukkan, di bawah ini adalah temuan dan saran saya.

1) Ketika saya mengklik ikon cluster di peta, baris kode ini (google.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_);) dipecat yang ada di file (.. \node_modules\js-marker-clusterer\src\markerclusterer.js).
Saya dapat melihat daftar penanda yang terkait dengan cluster tertentu di properti (this.cluster_)

2) Kemudian baris kode di bawah ini dipecat dalam file ini (..\node_modules\@agm\js-marker-clusterer\fesm5\agm-js-marker-clusterer.js).
var penangan = [
{
nama: 'clusterclick',
handler: function() { return _this.clusterClick.emit(); },
},
];
3) Saya ingin menyarankan jika Anda dapat meneruskan argumen ke clutterClick emit, fungsi clusterclick yang ditulis dalam komponen kita sendiri dapat dengan mudah mendapatkan semua penanda yang tersedia di cluster tertentu.
Di bawah ini adalah perubahan kode yang disarankan dari atas.
var penangan = [
{
nama: 'clusterclick',
handler: function ( args ) { return _this.clusterClick.emit( ​​args ); },
},
];

Jika Anda melakukan perubahan dan mempublikasikan di versi berikutnya.. itu akan sangat bagus.

@SebastianM ,

Perubahan apapun ?

Tidak ada yang mencoba perubahan @surendravanga ?

atau hanya solusi?

Jadi,

saya menerapkan perubahan @surendravanga dan berhasil.

bagi yang ingin memiliki konten cluster, Anda dapat melakukan ini:

Di component.html

<agm-marker-cluster [imagePath]="clusterLink" (clusterClick)="clickOnCluster($event)">

Di component.ts

clickOnCluster(cluster: any): void { cluster.markers_.map(m => { console.log(m); }); }

Di node_modules/markerclusterer/__ivy_ngcc__/fesm2015/agm-markerclusterer.js

pada baris 278:
handler: (args) => this.clusterClick.emit(args),

itu solusinya karena Anda harus mengulang pembaruan markerclusterer.js setiap kali Anda menghapus folder node_module.

@doom777 atau @SebastianM , dapatkah Anda menambahkan ini ke versi @agm/clusterer berikutnya? itu akan bagus! :)

kedengarannya menarik, saya akan memeriksanya. Anda ingin mengerjakan PR?

@Foreverdie Terima kasih telah bergabung dengan saya dengan pekerjaan di sekitar. @malapetaka777 . Saya akan melakukan PR dan mengirimkan permintaan kepada Anda.

Hai @doom777 , @SebastianM

Saya telah membuat permintaan tarik #1877 untuk masalah klik klaster.

Hargai jika Anda dapat segera menyetujui dan merilis di versi berikutnya.

Karena node_modules semakin dihapus setiap kali kami menerapkan, kami tidak dapat mengubah secara manual, meminta Anda untuk segera merilisnya.

Salam,
Surendra

Perubahan apapun ?

Halo yang disana,

Saya tidak bisa membuat penanda kekacauan bekerja dengan pengaturan berikut
"@agm/core": "^3.0.0-beta.0",
"@agm/markerclusterer": "^3.0.0-beta.0",
"@google/markerclustererplus": "^5.1.3",

Saya mendapatkan kesalahan ini

KESALAHAN di node_modules/@agm/markerclusterer/lib/directives/marker-cluster.d.ts:33:22 - error NG6002: Muncul di NgModule.imports dari AppModule, tetapi tidak dapat diselesaikan ke kelas NgModule.

Ini kemungkinan berarti bahwa perpustakaan (@agm/markerclusterer) yang menyatakan AgmMarkerCluster belum diproses dengan benar oleh ngcc, atau tidak kompatibel dengan Angular Ivy. Periksa apakah versi perpustakaan yang lebih baru tersedia, dan perbarui jika demikian. Juga pertimbangkan untuk memeriksa dengan penulis perpustakaan untuk melihat apakah perpustakaan diharapkan kompatibel dengan Ivy.

33 kelas ekspor menyatakan AgmMarkerCluster mengimplementasikan OnDestroy, OnChanges, OnInit, MarkerClustererOptions {

Jika ada contoh kerja yang dihosting di suatu tempat, adakah yang bisa menunjukkannya kepada saya?

Terima kasih

Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Terima kasih atas kontribusi Anda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat