Координаты на кликвент
Я новичок в @asymmetrik/ngx-leaflet и Angular в целом, так что, возможно, это всего лишь новичок...
У меня есть проект Angular.io (v5), использующий https://github.com/Asymmetrik/ngx-leaflet-tutorial-ngcli
Теперь я хотел бы получить координаты точки, которую я щелкнул на карте. По вопросу № 51 получить координаты по клику? Я добавил это:
map.on('click', () => { console.log(e.latlng); });
чтобы:
onMapReady(map: Map) {
map.fitBounds(this.route.getBounds(), {
padding: point(24, 24),
maxZoom: 12,
animate: true
});
map.on('click', () => { console.log(e.latlng); });
}
это дает мне ошибку во время выполнения:Cannot find name 'e'.
Какой вид имеет смысл для меня. Итак, я изменил код на:
map.on('click', (e) => { console.log(e.latlng); });
Но это также дает мне ошибку: Property 'latlng' does not exist on type 'LeafletEvent'
Когда я просто положил е на консоль console.log(e)
Я вижу, что свойство latlng существует... Почему я не могу получить доступ к координатам с помощью e.latlng
?
Мой проект использует:
"@ angular / cli": "1.4.7",
"@asymmetrik/ngx-leaflet": "^ 2.5.1",
"@ types / leaflet": "^1.2.0",
"листовка": "^1.2.0",
3 ответа
Компилятор делает вывод, что типом события является LeafletEvent, у которого нет свойства latlng. Вот почему вы получаете эту ошибку.
Документы Leaflet указывают, что это событие на самом деле имеет тип LeafletMouseEvent, который расширяет LeafletEvent. Таким образом, вы можете привести событие, чтобы получить доступ к свойствам LeafletMouseEvent (как показано ниже:
map.on('click', (<LeafletMouseEvent>e) => {
console.log(e.latlng);
});
Попробуй "бросить" это как LeafletMouseEvent
:
map.on('click', <LeafletMouseEvent>(e) => { console.log(e.latlng) });
Чтобы иметьlatlng
свойство, используйте тип параметраLeafletMouseEvent
вместоLeafletEvent
.