Невозможно динамически переключать язык с помощью AngularJS (NgMap) - PullRequest
0 голосов
/ 18 октября 2018

Я использую 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 голосов
/ 18 октября 2018

После загрузки карт Google язык изменить нельзя.Кажется, что библиотека ng-map не поддерживает автоматическую перезагрузку API, если она изменяется, поэтому пользовательским решением будет повторная визуализация компонента ng-map.

Вы можете использовать ng-if для уничтожениятекущую ng-карту и воссоздайте ее.

...