我正在使用ngmap(http://ngmap.github.io(版本1.18.4,角度版本1.4.9。
我想切换语言,但它没有生效。我看到了几个已经讨论过的问题,例如:
https://github.com/allenhwkim/angularjs-google-maps/issues/760
通过建议删除脚本标记,解决了上述问题。我没有加载谷歌地图的脚本标签。我有以下代码:
索引.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);
网页代码:
<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>
我在地图延迟加载参数中尝试了不同的组合,但没有任何效果。几个组合是:
$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">
有人可以告诉我解决方案吗?
一旦加载了谷歌地图,语言就无法更改。似乎ng-map
库不支持在 API 发生更改时自动重新加载 API,因此自定义解决方案是重新渲染ng-map
组件。
您可以使用ng-if
销毁当前的ng-map并重新创建它。