对于自己,我解决了这样的问题 - 添加和显示的弹出式窗口在必要时不使用的标准机制的角度(为指定消息标记)。 您当然可以在加载数据时立即初始化弹出消息,但在我的项目中更容易实现按需。
//popup's store
$scope.popups = {};
$scope._setViewMarker = function(pId, showPopup){
var wp = $scope.waypoints;
wp[pId].icon.markerColor = 'red';
//set unselected markers color
for (var i in wp)
if(i != pId){
wp[i].icon.markerColor = 'blue';
};
// close other popups
for (var i in $scope.popups)
if(i != pId)
$scope.map.closePopup($scope.popups[i]);
// show or create poupap
if(showPopup)
if($scope.popups[pId]){
if(!$scope.popups[pId]._isOpen)
$scope.map.openPopup($scope.popups[pId]);
} else {
var ind = $scope.points.map(function(e) { return e._id; }).indexOf(pId);
var c = angular.element('<popup point="points['+ind+']" note-click="showDetailPoint(points['+ind+'])"></popup>');
var linkFn = $compile(c);
var element = linkFn($scope);
$scope.popups[pId] = L.popup({offset:[0, -30]}).setLatLng([wp[pId].lat, wp[pId].lng]).setContent(element[0]).openOn($scope.map);
$scope.popups[pId].pointId = pId;
};
};
$scope.$on('leafletDirectiveMarker.viewMap.click', function(e, args){
$scope._setViewMarker(args.modelName, true);
});
你可以做小提琴吗? – cl3m
即使在http://tombatossals.github.io/angular-leaflet-directive/examples/0000-viewer.html#/markers/icons-example –
示例中,也可以观察到这一点如果执行e.preventDefault() ; $ scope.selectedPoint之前? – kozer