AngularJS谷歌地图不会在第一个视图上更新它的内容
AngularJS google map is not updating its content on the first view
这是一个单页的angular应用。我需要显示一个列表的地图基于城市或纬度和经度值来自远程。
我制作了一个指令并保存在一个ng-repeat中以显示地图。我的问题是地图在第一个视图上没有更新。如果我按下next按钮来显示下一组列表,则映射开始显示其内容。如果我按下inspect元素按钮,它就会开始显示内容。或者关闭inspect元素按钮。
my.html
<div ng-repeat="project in allProjects">
<map-image latitude-longitude="{{project.latlongstring}}" cityname="{{project.city.name}}" object-id="{{project.id}}">
<div id="map_{{project.id}}" style="height: 100%;"></div>
</map-image>
</div
我的指令链接函数包含显示映射的代码。My.map.js
link: function(scope, iElm, iAttrs, controller) {
var html ="";
var tempalate = "";
var map;
var geocoder;
scope.$watchGroup(['latitudeLongitude', 'city'], function() {
if(scope.latitudeLongitude){
InitializeMap("latitudeLongitude",scope.latitudeLongitude.split(','));
}else if(scope.city){
codeAddress(scope.city)
}
});
function InitializeMap(param, value) {
var latlng = new google.maps.LatLng(value[0],value[1]);
var myOptions =
{
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true
};
map = new google.maps.Map(document.getElementById("map_"+scope.objectid), myOptions);
}
var geocoder = new google.maps.Geocoder();
function codeAddress(address) {
geocoder.geocode({ 'address': address }, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
InitializeMap(null, [results[0].geometry.location.G,results[0].geometry.location.K])
}else {
console.log("Geocode unsuccessful");
}
});
};
已尝试使用
if(!scope.$$phase){
scope.$apply();
}
在map = new google.maps.Map(document.getElementById("map_"+scope.objectid), myOptions);
似乎你没有绑定初始化addDomListener事件。你需要像下面这样绑定它
google.maps.event.addDomListener(window, 'load', InitializeMap);
试试这个,
link: function(scope, iElm, iAttrs, controller) {
var html ="";
var tempalate = "";
var map;
var geocoder;
scope.$watchGroup(['latitudeLongitude', 'city'], function() {
if(scope.latitudeLongitude){
InitializeMap("latitudeLongitude",scope.latitudeLongitude.split(','));
}else if(scope.city){
codeAddress(scope.city)
}
});
function InitializeMap(param, value) {
var latlng = new google.maps.LatLng(value[0],value[1]);
var myOptions =
{
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true
};
map = new google.maps.Map(document.getElementById("map_"+scope.objectid), myOptions);
}
var geocoder = new google.maps.Geocoder();
function codeAddress(address) {
geocoder.geocode({ 'address': address }, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
InitializeMap(null, [results[0].geometry.location.G,results[0].geometry.location.K])
}else {
console.log("Geocode unsuccessful");
}
});
google.maps.event.addDomListener(window, 'load', InitializeMap);
};
相关文章:
- 在控制器之间切换,可以't更新视图
- 拖动&删除Fullcalendar.io资源-更新视图
- 由控制器调用的服务更改时,Angular未更新视图
- 如何在Knockout.js中选中复选框时更新视图模型及其依赖项
- 当视图在AngularJS中返回时,我如何获得异步服务调用来更新视图
- 角度:当输入更改时更新视图 + .this/$scope
- 数据库中的数据更改时更新视图
- ng单击需要两次才能更新视图
- 范围变量更新,但不更新视图
- 在jquery中更新视图模型
- 在Meteor.js中通过同一路线内的锚点标签更新视图
- 更新视图和控制器之间的角度重复数据值的最佳方式是什么
- AngularJS 服务不会更新视图
- AngularJS 模式单例在服务中未更新视图
- 角度 JS 脚本未更新视图
- AngularJS 在$rootScope更改时更新视图
- 如果外部应用程序更改了持久模型(服务器数据库),AngularJS 是否可以自动更新视图
- AngularJS$scope更改不更新视图
- 如何在不使用映射的情况下更新视图模型
- 用于引导程序选择的挖空自定义绑定,不更新视图模型“选定类别/选定类别”