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