无法将标记添加到 Angular Leaflet 指令

Unable to add marker to Angular Leaflet directive

我正在尝试向 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] The marker definition is not valid.

[AngularJS - Leaflet] Received invalid data on the marker 0.

我忽略了一些非常简单的事情,但我不知道是什么...任何线索将不胜感激。

$scope.markers 期望获得具有标记属性的对象,而不是标记本身。在您的示例中有用的只是一个 LatLng 对象,然后将其包装为 Marker.

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

或者,如果你从外面得到 Markers,你可以从里面拿回来:

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

显然,这并没有传达其他标记的属性,只是传达了坐标。