Openlayers ol3 geometryFunction交互。绘制添加GPS点

Openlayers ol3 geometryFunction交互。绘制添加GPS点,openlayers,openlayers-3,Openlayers,Openlayers 3,在我正在开发的一个项目中,我们使用ol.interaction.Draw功能来绘制几何图形。我们用于将GPS点添加到几何体(线串或多边形)的geometryFunction。这是通过设置布尔值来添加此GPS点来实现的。此布尔值由HTML中的一些按钮设置 Al工作正常,但在我们再次将光标移到地图上之前,草图不会更新。有没有一种方法可以在不将光标移动到地图上的情况下触发geometryFunction // Interaction $scope.interactions.draw =

在我正在开发的一个项目中,我们使用ol.interaction.Draw功能来绘制几何图形。我们用于将GPS点添加到几何体(线串或多边形)的geometryFunction。这是通过设置布尔值来添加此GPS点来实现的。此布尔值由HTML中的一些按钮设置

Al工作正常,但在我们再次将光标移到地图上之前,草图不会更新。有没有一种方法可以在不将光标移动到地图上的情况下触发geometryFunction

// Interaction
        $scope.interactions.draw = new ol.interaction.Draw({
            source: $scope.vector.getSource(),
            type: (function () {
                var type = 'Point';
                if ($scope.layer.TypeName == 'LineStyle')
                    type = 'LineString';
                if ($scope.layer.TypeName == 'PolygonStyle')
                    type = 'Polygon';
                return type;
            })(),
            geometryFunction: function (coordinates, geometry) {

                if (!_.isUndefined(geometry)) {
                    // Is move to GPS position selected?
                    if ($scope.moveToGpsPosition_) {
                        // GPS position
                        var pos = _geolocation.geolocation.getPosition();
                        // Line
                        if ($scope.layer.TypeName == 'LineStyle')
                            coordinates.splice(coordinates.length - 1, 0, pos);
                        // Polygon
                        if ($scope.layer.TypeName == 'PolygonStyle')
                            coordinates[0].splice(coordinates.length - 2, 0, pos);
                        // Stop move to GPS position
                        $scope.moveToGpsPosition_ = false;
                    }
                    geometry.setCoordinates(coordinates);
                } else {

                    // Detect geometry type
                    if ($scope.layer.TypeName == 'PointStyle')
                        geometry = new ol.geom.Point(coordinates);
                    if ($scope.layer.TypeName == 'LineStyle')
                        geometry = new ol.geom.LineString(coordinates);
                    if ($scope.layer.TypeName == 'PolygonStyle')
                        geometry = new ol.geom.Polygon(coordinates);
                }
                return geometry;
            }
        });

我很难复制您的问题,但我怀疑您可以通过在
geometry.setCoordinates(坐标)之后添加以下内容之一来解决问题:行:

map.updateSize()
map.render()

我在复制您的问题时遇到了困难,但我怀疑您可以通过在您的
geometry.setCoordinates(坐标)之后添加以下内容之一来解决问题:行:

map.updateSize()
map.render()