c5_labsci/web/jscss/map_polygon.html

125 lines
5.4 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<link href="/jscss/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" charset="utf-8" src="/jscss/theme.js"></script>
<style>
</style>
</head>
<body>
<div id="container" style="height: 40em;"></div>
<div class="div_edit" style="position: fixed; bottom: 1em; right: 1em; display: flex; display: none;z-index:1001;">
<code>选中后,可拖动白色顶点,也可双击删除顶点</code>
<button class="lang btn" onclick="delpoly()">选中删除</button>
<button class="lang btn" onclick="selpoly()">选定区域</button>
</div>
<script type="text/javascript" src="/jscss/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="/jscss/ciy.js"></script>
<script type="text/javascript" src="/jscss/gcoord.js"></script>
<script type="text/javascript" src="https://map.qq.com/api/gljs?libraries=tools&v=1.exp&key=TCEBZ-PACWI-OQCGA-5ST3L-CYEDS-OJFW4" charset="utf-8"></script>
<script type="text/javascript">
//polygon格式为 lat lng,lat lng...
var map;
var editor;
$(document).ready(function () {
var urls = ciyfn.urlparam();
var mapcenter = ciyfn.getstorage('_mappolygon');
if (!mapcenter)
mapcenter = { lng: 121.5, lat: 31.2, zoom: 12 };
map = new TMap.Map("container", {
showControl: false,
zoom: mapcenter.zoom,
center: new TMap.LatLng(mapcenter.lat, mapcenter.lng),
baseMap: { type: 'satellite' }
});
//urls.polygon = '40.771733 107.436660,40.770676 107.439385,40.770308 107.439625,40.768666 107.436046,40.770760 107.434476';
//urls.polygon = '';
var polys = urls.polygon.split(',');
var paths = [];
var llb = new TMap.LatLngBounds();
for (var i in polys) {
var ll = polys[i].split(' ');
if (ll.length != 2)
continue;
var gcloc = gcoord.transform([ll[1], ll[0]], gcoord.WGS84, gcoord.GCJ02);
var llx = new TMap.LatLng(gcloc[1], gcloc[0]);
llb.extend(llx);
paths.push(llx);
}
editor = new TMap.tools.GeometryEditor({
map: map,
overlayList: [],
actionMode: paths.length > 0 ? TMap.tools.constants.EDITOR_ACTION.INTERACT : TMap.tools.constants.EDITOR_ACTION.DRAW,//INTERACT DRAW
selectable: !!urls.edit,
snappable: true
});
editor.addOverlay({
overlay: new TMap.MultiPolygon({
map: map, styles: {
highlight2: new TMap.PolygonStyle({ color: "rgba(255,255,255,0.2)" })
}, geometries: []
}), id: "polygon3"
});
editor.setActiveOverlay("polygon3");
if (paths.length > 0) {
map.fitBounds(llb, { padding: { top: 40, bottom: 40, left: 20, right: 20 } });
var ao = editor.getActiveOverlay();
ao.overlay.add({
id: 3, styleId: "highlight2", paths: paths
});
}
editor.on('draw_complete', function (evtResult) {
editor.setActionMode(TMap.tools.constants.EDITOR_ACTION.INTERACT);
var oy = editor.getActiveOverlay();
var geos = oy.overlay.getGeometries();
if(geos.length > 0){
geos[0].styleId = "highlight2";
oy.overlay.updateGeometries(geos[0]);
}
});
editor.on('delete_complete', function (evtResult) {
editor.setActionMode(TMap.tools.constants.EDITOR_ACTION.DRAW);
});
map.on('panend', function () {
var mapCenter = map.getCenter();
ciyfn.setstorage('_mappolygon', { lat: mapCenter.getLat(), lng: mapCenter.getLng(), zoom: tofloat(map.getZoom()) });
});
if (urls.edit) {
$('.div_edit').show();
}
});
function selpoly() {
var oy = editor.getActiveOverlay();
var paths;
if (oy.overlay.geometries.length == 0) {
var selt = editor.getSelectedList();
if (selt.length == 0)
return ciyfn.toast('请绘制图形');
paths = selt[0].paths;
} else {
paths = oy.overlay.geometries[0].paths;
}
if(paths.length == 0)
return ciyfn.toast('请绘制图形。');
var val = [];
for(var i=0;i<paths.length;i++){
var gcloc = gcoord.transform([paths[i].lng, paths[i].lat], gcoord.GCJ02, gcoord.WGS84);
val.push(gcloc[1].toFixed(6) + ' ' + gcloc[0].toFixed(6));
}
ciyfn.sendsignal(window.top,'alert_done', {btn: '地图返回', inputs: val.join(',')});
}
function delpoly() {
editor.delete();
}
</script>
</body>
</html>