Angular-google-maps: eventos de clique agm-marker-cluster são passados ​​para agm-map

Criado em 29 dez. 2018  ·  27Comentários  ·  Fonte: SebastianM/angular-google-maps

Oi.

Ótima biblioteca por sinal.

Eu tenho um pequeno problema que acredito que deve ser marcado como um bug com relação ao tratamento de eventos de clique no agm-marker-cluster.

Para marcadores agm, os eventos de clique NÃO são passados ​​para o mapa agm, mas para o marcador que representa o cluster, os eventos de clique são passados ​​para o mapa agm.

Isso me causa problemas, pois tenho manipuladores de clique no mapa que NÃO quero que sejam executados ao clicar em um marcador e isso deve incluir o marcador de cluster.

Existe alguma maneira que eu possa dizer ao criador do cluster para não passar o evento na cadeia para o mapa agm ???

Percebo que os eventos de clique em marcadores de cluster têm comportamentos padrão, que é o que eu quero, ou seja, mapa central baseado em cluster e zoom para melhor definir os criadores no cluster clicado.

Meu principal problema é que tenho um evento click no mapa que executa outras funcionalidades e definitivamente NÃO quero que isso seja executado ao clicar em QUALQUER marcador, incluindo marcadores de cluster.

Cumprimentos

Steve

PRs welcome! MarkerClusterer stale

Comentários muito úteis

Oi @doom777 , @SebastianM

Eu criei o pull request #1877 para o problema de clique do cluster.

Agradeça se puder aprovar logo e liberar na próxima versão.

Como os node_modules são excluídos toda vez que implantamos, não podemos alterar manualmente, solicitamos que você libere em breve.

Cumprimentos,
Surendra

Todos 27 comentários

Mesma questão aqui. Você encontrou uma solução?

Eu tenho o mesmo problema também.

Bumbum, mesmo problema

Existe mesmo alguma solução para isso?

@ruisilva450 você encontrou a solução?

@ruisilva450 você encontrou a solução?

Não.
Tenho uma situação que posso contornar isso porque tenho que listar vários pontos que estão no mesmo ponto (mesmo lat, lng para vários pontos).
Então eu apenas pré-grupo esses pontos e uso uma propriedade para mostrar um pino diferente com o número de itens que estão nesse mesmo ponto. Desta forma é apenas um marcador normal e clicando nele posso obter a lista de itens que estão agrupados nas coordenadas desse marcador.

Não é realmente uma solução para o caso de uso deste problema, desculpe.

você tem certeza que ele faz para o mapa? Talvez seja apenas a propriedade zoomOnClick?

Eu tentei o evento de clique de cluster como fiz no stackblitz ([https://stackblitz.com/edit/angular-tst926]), por algum motivo o clique funciona, mas o parâmetro $event é indefinido. Pelo menos no stackblitz, o evento de clique é acionado, mas no meu aplicativo real não.

@doom777 , Por que o evento clusterClick está se comportando de forma estranha na amostra criada no link stackblitz: clusterClick

@doom777 , você deseja gerar um novo problema, pois o evento clusterClick está sendo registrado como "indefinido", o mesmo pode ser verificado no stackblitz: clusterClick

Então como obter os detalhes dos marcadores disponíveis em um cluster específico usando clusterClick? esse recurso ainda não foi implementado?

bem, você coloca os marcadores no cluster com base nos dados, então você pode usar os mesmos dados

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

@doom777

bem, você coloca os marcadores no cluster com base nos dados, então você pode usar os mesmos dados

Você passa allInstes para a função clusterClicked(), mas como obter marcadores em um cluster específico? No seu caso, você obtém todos os marcadores.

Como recuperar os valores no evento de clique do cluster, que se enquadram na mesma posição?

qualquer atualização no evento de clique do cluster, quando o evento de clique é acionado, devo conseguir obter todos os dados presentes no cluster.

junto com isso, por favor, sugira como atualizar o valor de MinimumClusterSize dinamicamente?
Estou tentando redimensionar o tamanho do cluster no evento zoomChange, mas não está dando certo.
Alguma sugestão?

@doom777 ,

Eu depurei as bibliotecas de node_modules de onde o clique do cluster é incorporado, abaixo estão minhas descobertas e sugestões.

1) Quando clico no ícone do cluster no mapa, esta linha de código (google.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_);) está sendo acionada, que está presente no arquivo (.. \node_modules\js-marker-clusterer\src\markerclusterer.js).
Posso ver a lista de marcadores associados a esse cluster específico na propriedade (this.cluster_)

2) Em seguida, a linha de código abaixo está sendo acionada neste arquivo (..\node_modules\@agm\js-marker-clusterer\fesm5\agm-js-marker-clusterer.js).
var manipuladores = [
{
nome: 'clusterclick',
manipulador: function() { return _this.clusterClick.emit(); },
},
];
3) Gostaria de sugerir que se você puder passar o argumento para a emissão clucterClick, a função clusterclick que está escrita em nosso próprio componente pode facilmente obter todos os marcadores disponíveis nos clusters específicos.
Abaixo está a alteração de código sugerida acima.
var manipuladores = [
{
nome: 'clusterclick',
manipulador: function ( args ) { return _this.clusterClick.emit( args ); },
},
];

Se você fizer as alterações e publicar na próxima versão, seria ótimo.

@SebastianM ,

Qualquer atualização ?

Ninguém tenta as mudanças do @surendravanga ?

ou apenas uma solução alternativa?

Assim,

apliquei as alterações do @surendravanga e funcionou.

para quem quiser ter o conteúdo do cluster, você pode fazer assim:

Em component.html

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

Em componente.ts

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

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

na linha 278:
handler: (args) => this.clusterClick.emit(args),

essa é uma solução alternativa porque você precisa refazer a atualização do markerclusterer.js toda vez que excluir a pasta node_module.

@doom777 ou @SebastianM , você pode adicionar isso à próxima versão do @agm/clusterer ? isso seria bom ! :)

parece interessante, vou pesquisar. Você quer fazer um PR?

@Foreverdie Obrigado por se juntar a mim com o trabalho. @doom777 . Vou fazer um PR e enviar-lhe o pedido.

Oi @doom777 , @SebastianM

Eu criei o pull request #1877 para o problema de clique do cluster.

Agradeça se puder aprovar logo e liberar na próxima versão.

Como os node_modules são excluídos toda vez que implantamos, não podemos alterar manualmente, solicitamos que você libere em breve.

Cumprimentos,
Surendra

Qualquer atualização ?

Olá,

Não consigo fazer com que o marcador de desordem funcione com a seguinte configuração
"@agm/core": "^3.0.0-beta.0",
"@agm/markerclusterer": "^3.0.0-beta.0",
"@google/markerclustererplus": "^5.1.3",

Estou recebendo este erro

ERRO em node_modules/@agm/markerclusterer/lib/directives/marker-cluster.d.ts:33:22 - erro NG6002: Aparece no NgModule.imports do AppModule, mas não pôde ser resolvido para uma classe NgModule.

Isso provavelmente significa que a biblioteca (@agm/markerclusterer) que declara o AgmMarkerCluster não foi processada corretamente pelo ngcc ou não é compatível com o Angular Ivy. Verifique se uma versão mais recente da biblioteca está disponível e atualize se estiver. Considere também verificar com os autores da biblioteca para ver se a biblioteca deve ser compatível com Ivy.

33 export declarar classe AgmMarkerCluster implementa OnDestroy, OnChanges, OnInit, MarkerClustererOptions {

Se houver uma amostra funcional hospedada em algum lugar, alguém pode me indicar isso?

obrigado

Este problema foi marcado automaticamente como obsoleto porque não teve atividade recente. Será fechado se não ocorrer mais nenhuma atividade. Obrigado por suas contribuições.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ChrisDevinePimss picture ChrisDevinePimss  ·  3Comentários

supran2811 picture supran2811  ·  4Comentários

DeveloperAdd007 picture DeveloperAdd007  ·  3Comentários

shedar picture shedar  ·  4Comentários

ostapch picture ostapch  ·  4Comentários