Leaflet: ES6 this.callInitHooks no es una función

Creado en 29 dic. 2016  ·  8Comentarios  ·  Fuente: Leaflet/Leaflet

  • [x] Estoy informando un error, no estoy pidiendo ayuda
  • [] Revisé la documentación para asegurarme de que el comportamiento esté documentado y sea esperado
  • [] Estoy seguro de que se trata de un problema con el código del folleto, no un problema con mi propio código ni con el marco que estoy usando (Cordova, Ionic, Angular, React ...)
  • [] Revisé los problemas para asegurarme de que aún no se informaron

Como reproducir

  • Versión de folleto que estoy usando:
  • Navegador (con versión) que estoy usando:
  • SO / Plataforma (con versión) Estoy usando:
  • paso 1
  • paso 2

Qué comportamiento estoy esperando y qué comportamiento estoy viendo

Ejemplo mínimo que reproduce el problema.

  • [] este ejemplo es lo más simple posible
  • [] este ejemplo no se basa en ningún código de terceros

Usando http://playground-leaflet.rhcloud.com/ o cualquier otro sitio similar a jsfiddle.

Comentario más útil

En caso de que alguien tenga el mismo error, en lugar de

var positron = L.TileLayer(...)

Deberías escribir:

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

Falta la nueva palabra clave en el enlace de su patio de recreo @pcrombach

Todos 8 comentarios

Estaba probando la última versión del folleto 1.02 para usar en una aplicación. Leaflet 1.0.2 funciona sin problemas si construyo la aplicación en javascript simple. Use el folleto 1.0.2 en una aplicación de TypeScript que se rompa con: this.callInitHooks no es una función tan pronto como agrego un complemento de Control como GeoSearch al mapa.

¿Es compatible el prospecto 1.0.2 ES6 / Typecript?

No debería haber nada en particular que le impida usar Leaflet con TypeScript (hay definiciones para ello: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/leaflet/index.d.ts) y ES6.

No dude en proporcionar un ejemplo en http://playground-leaflet.rhcloud.com/ , jsfiddle o similar si cree que hay algún problema en particular con Leaflet que lo previene.

Tienes toda la razón. Yo tampoco tengo problemas para usar Leaflet en mi aplicación con Typecript. Solo son los complementos los que no funcionan.
ejecutar los complementos no puede encontrar kookinit ().

Op 3 ene. 2017, om 14:57 heeft Según Liedman [email protected] het volgende geschreven:

No debería haber nada en particular que le impida usar Leaflet con TypeScript (hay definiciones para ello: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/leaflet/index.d.ts https: // github .com / DefinitelyTyped / DefinitelyTyped / blob / master / leaflet / index.d.ts ) y ES6.

No dude en proporcionar un ejemplo en http://playground-leaflet.rhcloud.com/ http://playground-leaflet.rhcloud.com/ , jsfiddle o similar si cree que hay algún problema en particular con Leaflet que lo previene.

-
Estás recibiendo esto porque eres el autor del hilo.
Responda a este correo electrónico directamente, véalo en GitHub https://github.com/Leaflet/Leaflet/issues/5224#issuecomment-270119252 , o silencie el hilo https://github.com/notifications/unsubscribe-auth/AAZlpz5axhLON3LzzdbHZIgG4DYx4- Gnks5rOlPMgaJpZM4LXtMC .

Creo que debería presentar un problema con el complemento en cuestión, desafortunadamente el equipo de Leaflet tiene una visión limitada de los complementos de otros autores, y también nuestro tiempo y recursos nos impiden depurar problemas fuera del núcleo de Leaflet.

No sé si esto ayuda, pero tuve el mismo problema. Pero fue mi error. Estaba llamando a L.TilelLayer y no a L.tileLayer (), quizás agregue esto a la documentación como errores comunes :-( ver también https://github.com/mWater/offline-leaflet-map/issues/18

En caso de que alguien tenga el mismo error, en lugar de

var positron = L.TileLayer(...)

Deberías escribir:

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

Falta la nueva palabra clave en el enlace de su patio de recreo @pcrombach

Solo para hacer explícito cuál es el problema: Leaflet usa clases y también tiene métodos de fábrica para crear nuevos objetos. Las clases están capturadas y deben llamarse con new , mientras que los métodos de fábrica están en minúsculas y no deberían. La documentación utiliza métodos de fábrica, por lo que no puedo decir si se admite la instanciación de clase directamente, aunque las fábricas simplemente llaman new todos modos. Por lo tanto, los siguientes son equivalentes, aunque solo se documenta el primero.

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

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

el mismo problema existe en reaccionar también

¿Fue útil esta página
0 / 5 - 0 calificaciones