0
개발중인 프로젝트에서 ol.interaction.Draw 기능을 사용하여 형상을 그립니다. Geometry (선 스트링 또는 다각형)에 GPS 점을 추가하기 위해 g 용하는 geometryFunction. 이것은이 GPS 지점을 추가하기 위해 부울을 설정하여 수행됩니다. 이 부울은 일부 HTML에 있던 버튼으로 설정됩니다.ol3 geometryFunction interaction.Draw GPS 지점 추가
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;
}
});