Leaflet: ES6 this.callInitHooks não é uma função

Criado em 29 dez. 2016  ·  8Comentários  ·  Fonte: Leaflet/Leaflet

  • [x] Estou relatando um bug, não estou pedindo ajuda
  • [] Eu olhei a documentação para ter certeza de que o comportamento é documentado e esperado
  • [] Tenho certeza de que é um problema de código de folheto, não um problema com meu próprio código nem com a estrutura que estou usando (Cordova, Ionic, Angular, React ...)
  • [] Pesquisei os problemas para ter certeza de que ainda não foram relatados

Como reproduzir

  • Versão do folheto que estou usando:
  • Navegador (com versão) que estou usando:
  • SO / plataforma (com versão) que estou usando:
  • passo 1
  • passo 2

Que comportamento estou esperando e que comportamento estou vendo

Exemplo mínimo reproduzindo o problema

  • [] este exemplo é o mais simples possível
  • [] este exemplo não depende de nenhum código de terceiros

Usando http://playground-leaflet.rhcloud.com/ ou qualquer outro site semelhante ao jsfiddle.

Comentários muito úteis

Caso alguém cometa o mesmo erro, em vez de

var positron = L.TileLayer(...)

você deve escrever:

var positron = new L.TileLayer(...)

A nova palavra-chave está faltando em seu link de playground @pcrombach

Todos 8 comentários

Eu estava testando a versão mais recente do folheto 1.02 para usar em um aplicativo. O folheto 1.0.2 funciona sem problemas se eu construir o aplicativo em javascript puro. Use o folheto 1.0.2 em um aplicativo Typescript que quebra com: this.callInitHooks não é uma função assim que adiciono um plug-in de controle como GeoSearch ao mapa.

O folheto 1.0.2 ES6 / Typescript é compatível?

Não deve haver nada em particular impedindo você de usar o Leaflet com TypeScript (há definições para isso: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/leaflet/index.d.ts) e ES6.

Sinta-se à vontade para fornecer um exemplo em http://playground-leaflet.rhcloud.com/ , jsfiddle ou semelhante se você acha que há algum problema específico com o folheto que impede isso.

Você está absolutamente certo. Eu também não tenho problemas para usar o Leaflet em meu aplicativo com o Typescript. São apenas os plug-ins que não funcionam.
executando os plug-ins não consegue encontrar kookinit ().

Op 3 jan. 2017, om 14:57 heeft Per Liedman [email protected] het volgende geschreven:

Nada deve impedir você de usar o Leaflet com TypeScript (há definições para isso: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/leaflet/index.d.ts https: // github .com / DefinitelyTyped / DefinitelyTyped / blob / master / leaflet / index.d.ts ) e ES6.

Sinta-se à vontade para fornecer um exemplo em http://playground-leaflet.rhcloud.com/ http://playground-leaflet.rhcloud.com/ , jsfiddle ou semelhante se você acha que há algum problema específico com o folheto que impede isso.

-
Você está recebendo isto porque é o autor do tópico.
Responda a este e-mail diretamente, visualize-o no GitHub https://github.com/Leaflet/Leaflet/issues/5224#issuecomment-270119252 ou ignore o tópico https://github.com/notifications/unsubscribe-auth/AAZlpz5axhLON3LzzdbHZIgG4DYx4- Gnks5rOlPMgaJpZM4LXtMC .

Acho que você deve registrar um problema com o plug-in em questão, infelizmente a equipe do Leaflet tem uma visão limitada dos plug-ins de outros autores e também nosso tempo e recursos nos impedem de depurar problemas fora do núcleo do Leaflet.

Não sei se isso ajuda, mas eu simplesmente tive o mesmo problema. Mas foi meu erro. Eu estava chamando L.TilelLayer e não L.tileLayer (), talvez adicione isso à documentação como erros comuns :-( consulte também https://github.com/mWater/offline-leaflet-map/issues/18

Caso alguém cometa o mesmo erro, em vez de

var positron = L.TileLayer(...)

você deve escrever:

var positron = new L.TileLayer(...)

A nova palavra-chave está faltando em seu link de playground @pcrombach

Só para deixar explícito qual é o problema - o Leaflet usa classes e também tem métodos de fábrica para criar novos objetos. As classes são capitializadas e precisam ser chamadas com new , enquanto os métodos de fábrica são minúsculos e não deveriam. A documentação usa métodos de fábrica, portanto, não posso dizer se a instanciação direta da instância da classe é suportada, embora as fábricas simplesmente chamem new qualquer maneira. Os itens a seguir são, portanto, equivalentes, embora apenas o primeiro seja documentado.

// Small t, calling factory method 
const positron = L.tileLayer(...); 

// Capital T, instantiating a new instance directly 
const positron = new L.TileLayer(...);

o mesmo problema existe na reação também

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

Questões relacionadas

edmsgists picture edmsgists  ·  3Comentários

gdbd picture gdbd  ·  3Comentários

CallMarl picture CallMarl  ·  3Comentários

pgeyman picture pgeyman  ·  3Comentários

piehei picture piehei  ·  3Comentários