2

我正在尝试向 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 上收到无效数据。

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

4

1 回答 1

2

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

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

或者,如果您Marker从外部获取 s,则可以从内部获取它:

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

显然,这并没有传达另一个标记的属性,只是坐标。

于 2015-11-25T12:16:43.650 回答