Невозможно добавить маркер в директиву Angular Leaflet

Я пытаюсь добавить маркер в директиву Leaflet, но почему-то он не принимает маркеры, созданные с помощью метода L.marker() по умолчанию.

Директива используется следующим образом:

<leaflet markers="markers" center="center" layers="layers" defaults="defaults"></leaflet>

Я расширяю свой $scope в контроллере, как предписано:

angular.extend($scope, {
    markers: {},
    //markers: { { someName: {lat:52.163815,lng:5.365131} } //this does work
});

Последующее добавление маркера почему-то не работает. Во-первых, объект .markers не является массивом, поэтому я не могу просто добавить какие-либо элементы, используя push(). Но даже добавление элемента в качестве ассоциативного массива не работает:

var marker = L.marker(L.latLng(52.163815, 5.365131));
$scope.markers[0] = marker;

Ошибка:

[AngularJS - Leaflet] Недопустимое определение маркера.

[AngularJS - Leaflet] Получены неверные данные по маркеру 0.

Я упускаю из виду что-то очень простое, но понятия не имею, что... Будем очень признательны за любые наводки.


person Ropstah    schedule 24.11.2015    source источник
comment
Почему вам нужно создать свой маркер с помощью L.marker? Angular ожидает только простые простые объекты с набором возможных свойств, точно так же, как вы делали это для инициализации $scope.markers. Просто добавьте позже простые простые объекты к вашему объекту $scope.markers. Вы можете использовать инкремент, чтобы получить уникальные ключи и избежать переопределения предыдущих объектов, если это необходимо (см. угловая-токен-ошибка)   -  person ghybs    schedule 25.11.2015


Ответы (1)


$scope.markers ожидает получить объект со свойствами маркера, а не сам маркер. В вашем примере будет работать только объект LatLng, прежде чем обернуть его как Marker.

$scope.markers[0] = L.latLng(52.163815, 5.365131);

Или, если вы получаете Markers извне, вы можете получить их обратно изнутри:

$scope.markers[0] = marker.getLatLng();

Очевидно, что это не передает свойства других маркеров, а только координаты.

person NOtherDev    schedule 25.11.2015