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

<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({...});
1
Thirdletter_CutsClean 5 Окт 2018 в 18:34

1 ответ

Лучший ответ

Чтобы ваш класс L.Routing не был неопределенным, вам нужно получить ссылку на карту и использовать ее там, когда карта загружена, но перед этим шагом вам нужно настроить angular.json для поиска в папке с вашими активами значков маркеров, иначе < a href = "https://github.com/Leaflet/Leaflet/issues/4968" rel = "nofollow noreferrer"> возникает эта проблема .

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>

Демо

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

1
kboul 13 Апр 2019 в 13:50