Openlayers 도형 그리 기 실현
6068 단어 Openlayers도형 제작
1.html 페이지 를 새로 만 들 고 ol.js 파일 을 도입 한 다음 body 에 div 태그,label 태그 와 select 드 롭 다운 옵션 을 만 듭 니 다.
2.코드 구현
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="../lib/ol/ol.js"></script>
<script type="text/javascript">
window.onload = function () {
//
var typeSelect = document.getElementById('type');
// , 、
var draw;
//
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: [0, 0],
zoom: 3
})
});
//
//wrapX:Wrap the world horizontally. Default is true.
//For vector editing across the -180° and 180° meridians to work properly, this should be set to false
var source = new ol.source.Vector({ wrapX: false });
//
var vector = new ol.layer.Vector({
//
source: source,
//
style: new ol.style.Style({
//
fill: new ol.style.Fill({
//
color: 'rgba(37,241,239,0.2)'
}),
//
stroke: new ol.style.Stroke({
//
color: '#264df6',
//
width:2
}),
// ,
image: new ol.style.Circle({
//
radius: 7,
//
fill: new ol.style.Fill({
//
color: '#e81818'
})
})
})
});
// map
map.addLayer(vector);
//
function addInteraction() {
//
var value = typeSelect.value;
// "None" ,
// "None" ,
if (value !== 'None') {
// ,
// "None" ,
if (source == null) {
source = new ol.source.Vector({ wrapX: false });
vector.setSource(source);
}
//geometryFunction ,
//maxPoints ,
var geometryFunction, maxPoints;
// "Square" , value Circle
// createRegularPolygon()
if (value === 'Square') {
value = 'Circle';
//Create a geometryFunction for type: 'Circle'
//that will create a regular polygon with a user specified number of sides and start angle instead of an ol.geom.
//
geometryFunction = ol.interaction.Draw.createRegularPolygon(4);
} else if (value === 'Rectangle') {
// "Square" , value LineString
value = 'LineString';
// 2
maxPoints = 2;
geometryFunction = function (coordinates, geometry) {
// geometry ,
if (!geometry) {
geometry = new ol.geom.Polygon(null);
}
//
var start = coordinates[0];
//
var end = coordinates[1];
//
geometry.setCoordinates([
[start, [start[0], end[1]], end, [end[0], start[1]], start]
]);
return geometry;
};
}
// draw
//
draw = new ol.interaction.Draw({
//
source: source,
//
type: value,
//
//Function that is called when a geometry's coordinates are updated
geometryFunction: geometryFunction,
//
maxPoints: maxPoints
});
// draw map ,
map.addInteraction(draw);
} else {
//
source = null;
//
vector.setSource(source);
}
}
//
typeSelect.onchange = function (e) {
// map
// , , draw
map.removeInteraction(draw);
//
addInteraction();
};
//
// ,
addInteraction();
};
</script>
</head>
<body>
<div id="menu">
<label> :</label>
<select id="type">
<option value="None"> </option>
<option value="Point"> </option>
<option value="LineString"> </option>
<option value="Polygon"> </option>
<option value="Circle"> </option>
<option value="Square"> </option>
<option value="Rectangle"> </option>
</select>
</div>
<div id="map"></div>
</body>
</html>
3.결과 전시점 도형 그리 기
선 도형 그리 기
다각형 그리 기
원형 그리 기
정사각형 그리 기
직사각형 그리 기
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React가 지원되지 않는 UI 라이브러리에서도 구성 요소로 그리기캔버스에서 그림과 도형을 그릴 수 있지만, 캔버스에서 Element을 그릴 수 있는 Overlay 기능이 있습니다. 다만, 오픈라이어스는 리액트를 지원하지 않기 때문에 일반적으로 설치하면 document.create...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.