Листовка Свойство-Маршрутизация-не-существует-по-типу-типу-импорта

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

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.4/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.3.4/dist/leaflet.js"></script>

import L from 'leaflet';

ОШИБКА TypeError: Невозможно прочитать свойство 'control' из неопределенного

Мой код здесь:

var polylineRouteB = L.Routing.control({...});

2 ответа

Решение

Чтобы ваш класс L.Routing не был неопределенным, вам нужно получить ссылку на карту и использовать ее там, когда карта загружена, но перед этим шагом вам нужно настроить angular.json для поиска в папке ваших ресурсов значков маркеров, в противном случае это проблема возникает.

import { 
    latLng, 
    tileLayer, 
    Icon, icon, Marker
} from 'leaflet';

import 'leaflet';
import 'leaflet-routing-machine';
declare let L;
...

// Override default Icons
private defaultIcon: Icon = icon({
    iconUrl: 'assets/marker-icon.png',
    shadowUrl: 'assets/marker-shadow.png'
});

ngOnInit() {
    Marker.prototype.options.icon = this.defaultIcon;
}

onMapReady(map: L.Map) {
    L.Routing.control({
        waypoints: [
            L.latLng(57.74, 11.94),
            L.latLng(57.6792, 11.949)
        ],
        routeWhileDragging: true
    }).addTo(map);
}

шаблон

<div style="height: 800px;"
    leaflet 
    [leafletOptions]="options"
    (leafletMapReady)="onMapReady($event)">
</div>

Вы можете увидеть пошаговое "руководство" в следующей ссылке на github, следуя указаниям.

Также обратите внимание, что его библиотека не разрешает неограниченные запросы к серверу, поэтому она часто возвращает 429 HTTP-ответов.

Вы хотите установить это:

      npm install --save @types/leaflet-routing-machine

Это решит мою проблему.

Другие вопросы по тегам