2

我現在用的是角谷歌地圖API定義如下: https://angular-ui.github.io/angular-google-maps/#!/api隱藏在點擊與角谷歌,地圖的所有信息窗口

我有以下的DOM結構

<ui-gmap-markers models="destinationMarkers" coords="'self'" idKey='self.idkey' > 
    <div ui-gmap-windows models="destinationMarkers" control="infoWindows"> 
     <div ng-non-bindable> 
      <!-- {{contents}} --> 
     </div> 
    </div> 
</ui-gmap-markers> 

我試圖讓它使得信息窗口在地圖的任何其他部分被點擊或當另一個窗口被打開時關閉。我得到的最接近的是呼叫:scope.infoWindows.getChildWindows(),它可以訪問標記對象,但是調用相關的hideWindow函數似乎什麼也不做。有誰知道如何做到這一點?

+0

請發表你有什麼至今(一個工作演示*最好http://plnkr.co*) – 2014-11-25 14:24:30

+1

您可以在https://angular-ui.github.io/angular-google-maps/#!/api下的「Windows」菜單項下找到一個,位於底部。所有其他代碼工作正常 - 我只是不知道如何訪問和刪除這些信息窗口。 – userqwert 2014-11-25 14:26:43

回答

4

我剛纔遇到一模一樣的問題,作些小後,我周圍有一個解決方案(對不起,如果我是個有點晚比賽)

您必須設置像這樣的窗口上的控制器屬性。 ..

<ui-gmap-window ng-if="m.response" control="googlemap" > 

在「GoogleMap的」控制必須是範圍的成員,和「控制」必須被定義爲像這樣的地圖對象上一個空對象...

$scope.googlemap = {}; 

$scope.map = { 
    zoom: 5, 
    center: getMapCenter(response), 
    options: { 
     // draggable: false 
    }, 
    control: {} 
}; 

現在我們可以在一個事件附加到標記,這將使我們遍歷窗口的列表,並隱藏他們是這樣的...

markers.push({ 
    id: i, 
    ... 
    ... 
    events: { 
     click: function(e){ 
      var windows = $scope.googlemap.getChildWindows(); 

      for (var i = 0; i < windows.length; i++){ 
       windows[i].hideWindow() 
      } 
     } 
    } 
});