2015-11-24 36 views
1

我試圖給Leaflet指令添加一個標記,但不知何故它不接受使用默認L.marker()方法創建的標記。無法將標記添加到Angular Leaflet指令

該指令的使用方法如下:

<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 - 傳單該標記定義無效。

[AngularJS - 傳單]收稿上的標記0

我俯瞰很簡單的東西無效的數據,但我還是不知道什麼...任何鉛將不勝感激。

+1

爲什麼你需要用'L.marker'創建你的標記? Angular只期望[具有一組可能屬性的簡單對象](https://github.com/tombatossals/angular-leaflet-directive/blob/master/doc/markers-attribute.md#marker-attributes),完全像你沒有初始化'$ scope.markers'。只需稍後將簡單的普通對象添加到您的'$ scope.markers'對象。您可以使用增量器來獲取唯一鍵,並避免在需要時覆蓋以前的對象(請參閱https://stackoverflow.com/questions/33901333/angular-token-error) – ghybs

回答

1

$scope.markers期望獲得具有標記屬性的對象,而不是標記本身。在你的例子中,只有一個LatLng對象,然後將其封裝爲Marker

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

或者,如果你從外面得到Marker S,你可以得到它從裏面背:

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

顯然,這不會傳達另一個標記的屬性,只是座標。

相關問題