Leaflet: ES6 this.callInitHooks не является функцией

Созданный на 29 дек. 2016  ·  8Комментарии  ·  Источник: Leaflet/Leaflet

  • [x] Я сообщаю об ошибке, а не прошу помощи
  • [] Я просмотрел документацию, чтобы убедиться, что поведение задокументировано и ожидаемо
  • [] Я уверен, что это проблема кода Leaflet, а не проблема моего собственного кода или используемой мной инфраструктуры (Cordova, Ionic, Angular, React…)
  • [] Я просмотрел проблемы, чтобы убедиться, что о них еще не сообщалось.

Как воспроизвести

  • Версия буклета, которую я использую:
  • Браузер (с версией) Я использую:
  • ОС / Платформа (с версией) Я использую:
  • шаг 1
  • шаг 2

Какого поведения я ожидаю и какое поведение наблюдаю

Минимальный пример воспроизведения проблемы

  • [] этот пример максимально простой
  • [] этот пример не полагается на какой-либо сторонний код

Использование http://playground-leaflet.rhcloud.com/ или любого другого сайта, подобного jsfiddle.

Самый полезный комментарий

На всякий случай у кого-то такая же ошибка, а не

var positron = L.TileLayer(...)

вы должны написать:

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

Новое ключевое слово отсутствует в ссылке на вашей игровой площадке @pcrombach

Все 8 Комментарий

Я пробовал использовать последнюю версию брошюры 1.02 в приложении. Leaflet 1.0.2 работает без проблем, если я создаю приложение на простом javascript. Листовка 1.0.2 в приложении Typescript прерывается: this.callInitHooks не является функцией, как только я добавляю на карту подключаемый модуль Control, например GeoSearch.

Совместима ли брошюра 1.0.2 ES6 / Typescript?

Ничего особенного не должно мешать вам использовать Leaflet с TypeScript (для него есть определения: https://github.com/DefinitiTyped/DefinentyTyped/blob/master/leaflet/index.d.ts) и ES6.

Не стесняйтесь предоставить пример на http://playground-leaflet.rhcloud.com/ , jsfiddle или аналогичных, если вы считаете, что есть какая-то конкретная проблема с Leaflet, которая предотвращает это.

Вы абсолютно правы. У меня тоже нет проблем с использованием Leaflet в моем приложении с Typescript. Просто плагины не работают.
запуск плагинов не может найти kookinit ().

Оп 3 янв. 2017, в 14:57 heeft Пер Лидман [email protected] het volgende geschreven:

Ничего особенного не должно мешать вам использовать Leaflet с TypeScript (для него есть определения: https://github.com/DefinentyTyped/DefinentyTyped/blob/master/leaflet/index.d.ts https: // github .com / ОпределенноТипед / ОпределенноТипед / blob / master / leaflet / index.d.ts ) и ES6.

Не стесняйтесь предоставить пример на http://playground-leaflet.rhcloud.com/ http://playground-leaflet.rhcloud.com/ , jsfiddle или аналогичных, если вы считаете, что есть какая-то конкретная проблема с Leaflet, которая предотвращает это.

-
Вы получаете это, потому что вы являетесь автором темы.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://github.com/Leaflet/Leaflet/issues/5224#issuecomment-270119252 или отключите поток https://github.com/notifications/unsubscribe-auth/AAZlpz5axhLON3LzzdbHZIgG4DY Gnks5rOlPMgaJpZM4LXtMC .

Я думаю, вам следует сообщить о проблеме с рассматриваемым плагином, к сожалению, команда Leaflet имеет ограниченное представление о плагинах других авторов, а также наше время и ресурсы не позволяют нам отлаживать проблемы за пределами ядра Leaflet.

Не знаю, помогает ли это, но у меня была такая же проблема. Но это была моя ошибка. Я звонил L.TilelLayer, а не L.tileLayer (), возможно, добавлю это в документацию как типичные грубые ошибки :-( см. Также https://github.com/mWater/offline-leaflet-map/issues/18

На всякий случай у кого-то такая же ошибка, а не

var positron = L.TileLayer(...)

вы должны написать:

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

Новое ключевое слово отсутствует в ссылке на вашей игровой площадке @pcrombach

Просто чтобы прояснить, в чем проблема - Leaflet использует классы, а также имеет фабричные методы для создания новых объектов. Классы заглавные и должны вызываться с помощью new , в то время как фабричные методы пишутся в нижнем регистре и не должны. В документации используются фабричные методы, поэтому я не могу сказать, поддерживается ли непосредственное создание экземпляра класса, хотя фабрики в любом случае просто вызывают new . Следовательно, следующие эквивалентны, хотя документировано только первое.

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

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

такая же проблема существует и в реакции

Была ли эта страница полезной?
0 / 5 - 0 рейтинги