Я пытаюсь добавить маркер в директиву 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.
Я упускаю из виду что-то очень простое, но понятия не имею, что... Будем очень признательны за любые наводки.
L.marker
? Angular ожидает только простые простые объекты с набором возможных свойств, точно так же, как вы делали это для инициализации$scope.markers
. Просто добавьте позже простые простые объекты к вашему объекту$scope.markers
. Вы можете использовать инкремент, чтобы получить уникальные ключи и избежать переопределения предыдущих объектов, если это необходимо (см. угловая-токен-ошибка) - person ghybs   schedule 25.11.2015