嗨,我正在使用我的项目的角度-谷歌-地图。html和js代码如下所示
html:
<ui-gmap-markers models="apartments" coords="'loc'" icon="'assets/images/map_icon_normal.png'" idkey="'_id'"
fit="'false'" click="click">
<ui-gmap-windows show="'show'" >
<div ng-non-bindable>{{streetAddress}}</div>
</ui-gmap-windows>
</ui-gmap-markers>
</ui-gmap-google-map>脚本: angular.module('myApp')
.controller('MapCtrl',
function ($scope, $routeParams, Map, uiGmapGoogleMapApi) {
$scope.apartments = [];
$scope.customIcon = "../../assets/images/map_icon_normal.png"
$scope.map = {
center: {
latitude: $routeParams.lat,
longitude: $routeParams.lon
},
zoom: 5,
bounds: {},
events: {
tilesloaded: function (map) {
//console.log('tiles loaded');
$scope.$apply(function () {
$scope.mapInstance = map;
//console.log(map.getBounds().getNorthEast());
$scope.searchbox.options.bounds = new google.maps.LatLngBounds($scope.mapInstance.getBounds().getNorthEast(),
$scope.mapInstance.getBounds().getSouthWest());
});
},
idle: function(map) {
$scope.map.refresh = false;
},
resize: function(map) {
console.log('resize');
},
dragend: function() {
}
},
markersEvents: {
click: function(marker, eventName, model, args) {
console.log('markerEvent click');
$scope.map.window.model = model;
$scope.map.window.show = true;
}
},
window : {
marker: {},
show: false,
closeClick: function() {
this.show = false;
},
options: {} // define when map is ready
},
control: {},
refresh: function () {
$scope.map.control.refresh();
}
}
uiGmapGoogleMapApi.then(function (map) {
$scope.getData(20, 0, map);
map.visualRefresh = true;
$scope.mapInstance = map;
})
$scope.getData = function(limit, offset, map) {
Map.getApartments($routeParams.lat, $routeParams.lon, limit, offset).success(function (data) {
///----- I get undefined error here---
$scope.map.control.refresh();
});
}})
}我不确定如何使用新标记刷新地图,甚至不确定如何触发地图更新。我尝试了ui-gmap-google-map的'control‘和'refresh’参数,但是无法让它工作。
发布于 2015-03-20 11:39:04
您需要使用uiGmapIsReady -而不是uiGmapGoogleMapApi --来等待control对象使用其方法(如refresh)进行扩充。
uiGmapIsReady服务提供了在所有uiGmapGoogleMap指令都已完全初始化时进行解析的承诺,而uiGmapGoogleMapApi服务仅在Google Maps JS API加载时进行解析。
有关使用uiGmapIsReady的示例,请参见this answer。当然,不要忘记the docs。
关于如何更新作用域上的models属性以更新地图,您的代码示例需要进行充实和清理,以帮助您实现这一点。(例如,对于更新$scope.apartments,getApartments的分辨率是什么?或者,问这个问题本身就是答案?)看看this fiddle,它可能会在这段时间对你有所帮助。
发布于 2015-03-20 00:50:57
尝试dorebuildall属性。
<ui-gmap-markers
models="apartments"
coords="'loc'"
icon="'assets/images/map_icon_normal.png'"
idkey="'_id'"
fit="'false'"
click="click"
dorebuildall="true">
<ui-gmap-windows></ui-gmap-windows>
</ui-gmap-markers>更多详情请访问:http://angular-ui.github.io/angular-google-maps/
https://stackoverflow.com/questions/29148743
复制相似问题