无法使用AngularJS(NgMap)动态切换语言

时间:2018-10-18 09:02:15

标签: javascript angularjs google-maps ng-map

我正在使用ngmap(http://ngmap.github.io)版本1.18.4,角度版本1.4.9。

我想切换语言,但是没有生效。我看到了几个已经讨论过的问题,例如:

https://github.com/allenhwkim/angularjs-google-maps/issues/760

以上问题已通过建议删除脚本标签而解决。我没有加载Google地图的脚本标签。我有以下代码:

index.html:

<script src='bower_components/ngmap/build/scripts/ng-map.js'></script>

控制器代码:

$scope.markers = [$scope.latitude, $scope.longitude];
$scope.mapParams = 'https://maps.google.com/maps/api/js?language=' + $scope.locale;    

$timeout(function() {
  NgMap.getMap({id: 'site-map'}).then(function(map) {
    google.maps.event.trigger(map, 'resize');
    map.setCenter(new google.maps.LatLng($scope.latitude, $scope.longitude));
  });
}, 2000);

HTML代码:

<div map-lazy-load="https://maps.google.com/maps/api/js?key=abc&v=3.34" map-lazy-load-params="{{ mapParams }}">
    <ng-map id="site-map" center="{{[ latitude, longitude ]}}" zoom="question.zoom"
    >
      <marker position="{{ markers }}"></marker>
    </ng-map>
</div>

我在map-lazy-load-params中尝试了不同的组合,但是没有任何效果。很少有以下组合:

$scope.mapParams = '&language=' + $scope.locale;
$scope.mapParams = 'https://maps.googleapis.com/maps/api/js&language=' + $scope.locale;

静态语言可以很好地工作,就像我这样做来验证地图语言是否更改一样。

<div map-lazy-load="https://maps.google.com/maps/api/js?key=abc&v=3.34&language=ja">

有人可以告诉我解决方案吗?

1 个答案:

答案 0 :(得分:0)

一旦加载了Google地图,就无法更改语言。似乎ng-map库如果更改会不支持API的自动重载,因此自定义解决方案是重新呈现ng-map组件。

您可以使用ng-if销毁当前的ng-map并重新创建它。