0
私が開発しているプロジェクトでは、ol.interaction.Draw機能を使用してジオメトリを描画しています。ジオメトリ(線ストリングまたはポリゴン)にGPSポイントを追加するために使用するgeometryFunction。これは、このGPSポイントを追加するブール値を設定することによって達成されます。このブール値は、HTML内のボタンによって設定されます。ol3 geometry関数interaction.Draw GPSポイントを追加する
Alでもうまくいきますが、マップ上にカーソルを再配置するまでスケッチは更新されません。カーソルを地図上に移動せずにジオメトリの機能をトリガする方法はありますか?
// 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;
}
});