Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义控件中的角度贴图DrawManager实例_Javascript_Angularjs_Google Maps_Google Maps Api 3_Angularjs Directive - Fatal编程技术网

Javascript 自定义控件中的角度贴图DrawManager实例

Javascript 自定义控件中的角度贴图DrawManager实例,javascript,angularjs,google-maps,google-maps-api-3,angularjs-directive,Javascript,Angularjs,Google Maps,Google Maps Api 3,Angularjs Directive,我很难创建一个自定义控件,以便在Angular Google Maps库中更改地图的绘图模式 我的标记是这样的 <ui-gmap-google-map id="map" center="map.center" pan="map.pan" zoom="map.zoom" draggable="true" refresh="map.refresh" options="map.options" events="map.events" bounds="map.bou

我很难创建一个自定义控件,以便在Angular Google Maps库中更改地图的绘图模式

我的标记是这样的

                <ui-gmap-google-map id="map" center="map.center" pan="map.pan" zoom="map.zoom" draggable="true" refresh="map.refresh" options="map.options" events="map.events" bounds="map.bounds" dorebuildall="true">
                <ui-gmap-map-control template="js/app/templates/mapToolbar.tpl.html" position="top-right" controller="mapWidgetCtrl"></ui-gmap-map-control>
                    <ui-gmap-polygons models="map.polygons" clickable="true" draggable="true" editable="true" dorebuildall="true"></ui-gmap-polygons>
                <ui-gmap-markers models="mapMarkers" coords="'self'" icon="'icon'" events="clickEventsObject"></ui-gmap-markers>
                <ui-gmap-drawing-manager options="drawingManagerOptions" control="drawingManagerControl" events="drawEventHandler"></ui-gmap-drawing-manager>

            </ui-gmap-google-map>
[等等]

具有自定义控件的模板的另一个控制器是:

    app.controller('mapWidgetCtrl', ['$scope', function ($scope) {

    $scope.toogleMap = function() {    
        console.log('Change map view via drawingManager');
    };

}]);
我很难在两个控制器中手动更改地图视图(也无法以某种方式从一个控制器传递到另一个控制器)。似乎除了polygonComplete函数之外,我找不到任何方法来获取drawManager的实例

任何建议都会很有帮助,谢谢。

您可以在控制器之间引入一个共享绘图管理器控件:

app.service('sharedMapProperties', function () {
    var drawingManagerControl = {};

    return {
        setDrawingManagerControl: function (value) {
            drawingManagerControl = value;
        },
        getDrawingManagerControl: function () {
            return drawingManagerControl;
        }
    }
});
现在,可以在初始化映射后保存控件(
drawingManagerControl
变量):

app.controller('mapSearchCtrl', function ($scope, uiGmapIsReady, sharedMapProperties) {

    //the remaining code is omitted..


    $scope.drawingManagerControl = {};
    sharedMapProperties.setDrawingManagerControl($scope.drawingManagerControl);


});
然后单击按钮后获得控制权:

app.controller('mapWidgetCtrl', ['$scope', 'sharedMapProperties', function ($scope, sharedMapProperties) {
    $scope.toogleMap = function () {
        var control = sharedMapProperties.getDrawingManagerControl();
        var drawingManager = control.getDrawingManager();
        drawingManager.setDrawingMode(google.maps.drawing.OverlayType.CIRCLE);
        console.log('Change map view via drawingManager');
    };
}]);

非常感谢!我必须将sharedApproperties.setDrawingManagerControl($scope.drawingManagerControl)放入文件中;在uiGmapIsReady.promise()中,为了让它工作,但它只是我需要的!
app.controller('mapWidgetCtrl', ['$scope', 'sharedMapProperties', function ($scope, sharedMapProperties) {
    $scope.toogleMap = function () {
        var control = sharedMapProperties.getDrawingManagerControl();
        var drawingManager = control.getDrawingManager();
        drawingManager.setDrawingMode(google.maps.drawing.OverlayType.CIRCLE);
        console.log('Change map view via drawingManager');
    };
}]);