2015-02-05 70 views
1

即時通訊使用角谷歌地圖庫,但我似乎無法得到地圖更新時,我動態地添加新的標記到我的模型。模型中的硬編碼標記正確顯示。角度谷歌地圖更新標記模型

HTML

<ui-gmap-markers models="map.placeMarkers" coords="'self'" icon="'icon'" options="'options'" click="'onClicked'" modelsbyref="true"></ui-gmap-markers> 

JS

$scope.map.placeMarkers = [ 
      { 
       id: 1, 
       latitude: 45, 
       longitude: -74, 
       options: {}, 
       title: 'Test 123' 
      }, 
      { 
       id: 2, 
       latitude: 15, 
       longitude: 30, 
       options: {}, 
       title: 'Test 1234' 
      } 
     ]; 

以上工作正常,但是當我這樣做:

var place = { 
    id: 3, 
    latitude: 455, 
    longitude: -574, 
    options: {}, 
    title: 'Test 1233455' 
}; 

$scope.map.placeMarkers.push(place); 

該模型是更新而不是地圖。我嘗試過使用$ scope。$ apply(),但由於摘要循環已經在進行中,所以出現錯誤。

+0

請嘗試以下鏈接。這是一個使用角度js動態添加標記的工作示例。遵循這個例子,並希望它適合你:) [** LINK **](http://jsfiddle.net/svigna/pc7Uu/) – 2015-02-05 17:51:27

+0

我有同樣的問題,你有解決方案嗎? Ben_hawk – kimo 2015-12-26 18:58:08

+0

是的,我沒有與這個圖書館工作了很長時間,但如果我記得正確地表現出性能改變。您需要更改數組引用才能刷新地圖。嘗試在您的places數組上使用角度副本,並在地圖位置屬性中設置結果。讓我知道它是否有效。 – 2015-12-27 21:33:37

回答

0

需要modelsbyref在UI的GMAP-標誌設置爲false指令

<ui-gmap-markers models="places" coords="'self'" modelsbyref="false"> 

    </ui-gmap-markers> 
+0

這不起作用 – dublx 2015-06-24 13:20:48

0

同樣的事情發生在我身邊。用了幾個小時找到解決方案。

似乎只要我們更新標記,angularjs不會立即更新它。只需撥打$ scope。$ digest()將新標記推送到數組後。

同時檢查$ scope。$ apply()函數,它會自動調用$ scope。$ digest()。 請參閱本教程,詳細講解: tutorial showing $scope.$digest(), $scope.$apply, $scope.watch

它寫在上面的教程:

您可能會遇到一些角落情況下,AngularJS不會調用$摘要你()函數。您通常會通過注意到數據綁定不會增加顯示的值來檢測該數據。在這種情況下,調用$ scope。$ digest(),它應該可以工作。或者,您可以使用$ scope。$ apply()