我正在使用 Angular 传单指令。我有一个菜单,用户可以在其中点击一个选项。每次用户单击一个选项时,地图都会使用两个新标记进行更新,并且应调整边界以使这些标记都可见。标记得到更新,但边界似乎有所不同。用户第一次单击时,边界会更新,但此后每次都不会更新。这是每次用户选择一个选项时调用的代码:
var updateMap = function() {
setDirections();
$scope.bounds = leafletBoundsHelpers.createBoundsFromArray([
[$scope.thisPractice.end.k, $scope.thisPractice.end.D],
[$scope.thisPractice.start.k, $scope.thisPractice.start.D]
]);
$scope.markers = {
end: {
title: "Destination",
lat: $scope.thisPractice.end.k,
lng: $scope.thisPractice.end.D,
focus: true,
icon: local_icons.markerRed
},
start: {
title: "Start",
lat: $scope.thisPractice.start.k,
lng: $scope.thisPractice.start.D,
}
}
}
这是我的地图初始化代码:
// Initialize the map
angular.extend($scope, {
center: {},
bounds: {},
paths: {},
markers: {},
scrollWheelZoom: false,
layers: {
baselayers: {
googleRoadmap: {
name: 'Google Streets',
layerType: 'ROADMAP',
type: 'google'
}
}
}
});
这是我的地图出现的 HTML:
<div id="map_canvas">
<leaflet id="leaflet_map" bounds="bounds" center="center" markers="markers" paths="paths" height="300px" width="100%" layers="layers"></leaflet>
</div>
这不是我的数据的问题,因为标记更新得很好。有任何想法吗?边界的功能与标记的功能不同,这似乎很奇怪。
编辑:
所以下面的代码利用了标准的 Leafleat.js 函数并且可以工作:
var bounds = L.latLngBounds([$scope.thisPractice.end.k, $scope.thisPractice.end.D], [$scope.thisPractice.start.k, $scope.thisPractice.start.D])
leafletData.getMap().then(function(map) {
map.fitBounds(bounds);
});
如果 angular 指令以相同的方式实现 fitbounds,那就太好了。