2016-01-16 22 views
1

主HTML:如何更新標記或從地圖控件的控制器中添加新標記?

<div ng-controller="MapCtrl as vm"> 
    <ui-gmap-google-map center="vm.map.center" zoom="vm.map.zoom"> 
    <ui-gmap-map-control template="mapControl.tpl.html" controller="MapControlCtrl"></ui-gmap-map-control> 
    <ui-gmap-marker idKey="vm.marker1.id" coords="vm.marker1.coords"></ui-gmap-marker> 
    </ui-gmap-google-map> 
</div> 

MapCtrl:

angularApp.controller('MapCtrl', function() { 
    var vm = this; 

    vm.map = { 
    zoom: 11, 
    center: { 
     latitude: ..., 
     longitude: ... 
    } 
    }; 

    vm.marker1 = { 
    id: 1, 
    coords: { 
     latitude: ..., 
     longitude: ... 
    } 
    }; 
}); 

mapControl.tpl.html:

<button ng-click="addMarker()">Add</button> 
<button ng-click="updateMarker1()">Update Marker 1</button> 

MapControlCtrl:

angularApp.controller('MapControlCtrl', function($scope) { 
    $scope.addMarker = function() { 
    // how to add a marker to the map from within this method? 
    }; 
    $scope.updateMarker1 = function() { 
    // how to update marker1 from within this method? 
    }; 
)}; 

回答

1

您可能需要使用<ui-gmap-markers>這需要標記的陣列,而不是一個在<ui-gmap-marker>

然後就可以推新標記對象到數據陣列,以在地圖上的

+0

如何從輔助控制器推它? –

+1

使用服務在控制器間共享數據 – charlietfl

-1

由於正在使用「VAR VM =此」在你的控制器語法被顯示,則必須用「controller as」語法指定您的控制器。

UI-GMAP-MAP-控制模板= 「mapControl.tpl.html」 控制器= 「MapControlCtrl作爲VM」

請再試上述變化。

謝謝, Soma。

+0

這不是我一直在問的問題! –