提交代码

This commit is contained in:
2024-09-24 11:28:27 +08:00
parent 24de50cd30
commit 0865c7e41e
54 changed files with 5535 additions and 784 deletions
@@ -57,44 +57,191 @@
</form>
</body>
</html>
<script src="https://api.map.baidu.com/api?v=2.0&ak=24y6PiwMI7AqPQ3L4SE253mWKntWR1Nq"></script>
<link type="text/css" href="../../res/ol/ol.css" rel="stylesheet"/>
<script type="text/javascript" src="../../res/ol/ol.js" charset="utf-8"></script>
<script type="text/javascript" src="../../res/ol/bd09.js" charset="utf-8"></script>
<script type="text/javascript">
F.ready(function () {
var txtLoc = "<%=txtLoc.ClientID%>"
var tileLayer = new BMap.TileLayer();
tileLayer.getTilesUrl = function (tileCoord, zoom) {
var x = tileCoord.x;
var y = tileCoord.y;
return '../File/Map/SD1-PC-2023-001/tiles/' + zoom + '/tile-' + x + '_' + y + '.png';
}
var MyMap = new BMap.MapType('MyMap', tileLayer, { minZoom: 3, maxZoom: 8 });
var map = new BMap.Map('map', { mapType: MyMap });
map.addControl(new BMap.NavigationControl( ));
map.centerAndZoom(new BMap.Point(0, 0), 5);
//map.addEventListener('click', function (e) {
// alert('点击位置经纬度:' + e.latlng.lng + ',' + e.latlng.lat);
// // var marker1 = new BMap.Marker(new BMap.Point(e.latlng.lng, e.latlng.lat));
//// 在地图上添加点标记
//map.addOverlay(marker1);
//});
/*定义百度投影,这是实现无偏移加载百度地图离线瓦片核心所在。
网上很多相关资料在用OpenLayers加载百度地图离线瓦片时都认为投影就是EPSG:3857(也就是Web墨卡托投影)。
事实上这是错误的,因此无法做到无偏移加载。
百度地图有自己独特的投影体系,必须在OpenLayers中自定义百度投影,才能实现无偏移加载。
百度投影实现的核心文件为bd09.js,在迈高图官网可以找到查看这个文件。*/
var projBD09 = new ol.proj.Projection({
code: 'BD:09',
extent: [-20037726.37, -11708041.66, 20037726.37, 12474104.17],
units: 'm',
axisOrientation: 'neu',
global: false
});
map.addEventListener("click", function (e) {
map.clearOverlays();
var marker1 = new BMap.Marker(new BMap.Point(e.Dg.lng, e.Dg.lat));
//// 在地图上添加点标记
map.addOverlay(marker1);
F( txtLoc).setValue(e.Dg.lng+';'+e.Dg.lat)
}
ol.proj.addProjection(projBD09);
ol.proj.addCoordinateTransforms("EPSG:4326", "BD:09",
function (coordinate) {
return lngLatToMercator(coordinate);
},
function (coordinate) {
return mercatorToLngLat(coordinate);
}
);
/*定义百度地图分辨率与瓦片网格*/
var resolutions = [];
for (var i = 0; i <= 18; i++) {
resolutions[i] = Math.pow(2, 18 - i);
}
var tilegrid = new ol.tilegrid.TileGrid({
origin: [0, 0],
resolutions: resolutions
});
/*加载百度地图离线瓦片不能用ol.source.XYZol.source.XYZ针对谷歌地图(注意:是谷歌地图)而设计,
而百度地图与谷歌地图使用了不同的投影、分辨率和瓦片网格。因此这里使用ol.source.TileImage来自行指定
投影、分辨率、瓦片网格。*/
var source = new ol.source.TileImage({
projection: "BD:09",
tileGrid: tilegrid,
tileUrlFunction: function (tileCoord, pixelRatio, proj) {
//openlayer5的版本
var z = tileCoord[0];
var x = tileCoord[1];
var y = tileCoord[2];
return '../../File/Map/SD1-PC-2023-001/tiles/' + z + '/tile-' + x + '_' + y + '.png';
}
});
var mapLayer = new ol.layer.Tile({
source: source
});
let map = new ol.Map({
layers: [
mapLayer
],
view: new ol.View({
center: ol.proj.transform([5, 5], 'EPSG:4326', 'BD:09'),
projection: 'BD:09',
zoom: 5
}),
target: 'map'
});
var marker =null ;
var markerLayer =null;
var createLabelStyle = function (feature) {
return new ol.style.Style({
/**{olx.style.IconOptions}类型*/
image: new ol.style.Icon({
anchor: [0.5, 60],
anchorOrigin: 'top-right',
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
offsetOrigin: 'top-right',
// offset:[0,10],
//图标缩放比例
// scale:0.5,
//透明度
//opacity: 0.75,
//图标的url
src: '../File/Image/loc.png',
})
})
}
map.on('click', function (evt) {
//map.clearOverlays();
if (marker != null && markerLayer != null) {
markerLayer.getSource().removeFeature(marker);
}
var coordinate = evt.coordinate; //鼠标单击点的坐标
//新建一个要素ol.Feature
//实例化Vector要素,通过矢量图层添加到地图容器中
var iconFeature = new ol.Feature({
geometry: new ol.geom.Point(coordinate),
})
marker = iconFeature;
iconFeature.setStyle(createLabelStyle(iconFeature))
//矢量标注的数据源
var vectorSource = new ol.source.Vector({
features: [iconFeature],
})
//矢量标注图层
var vectorLayer = new ol.layer.Vector({
source: vectorSource,
})
markerLayer = vectorLayer;
map.addLayer(vectorLayer)
F(txtLoc).setValue(coordinate[0] + ';' + coordinate[1])
});
var txtloc = F(txtLoc).getValue();
if (txtloc != null && txtloc != '') {
var lng = txtloc.split(";")[0];
var lat = txtloc.split(";")[1];
var marker1 = new BMap.Marker(new BMap.Point(lng, lat));
//// 在地图上添加点标记
map.addOverlay(marker1);
}
var lng = txtloc.split(";")[0];
var lat = txtloc.split(";")[1];
//实例化Vector要素,通过矢量图层添加到地图容器中
var iconFeature = new ol.Feature({
geometry: new ol.geom.Point([Number(lng), Number(lat)]),
})
marker = iconFeature;
iconFeature.setStyle(createLabelStyle(iconFeature))
//矢量标注的数据源
var vectorSource = new ol.source.Vector({
features: [iconFeature],
})
//矢量标注图层
var vectorLayer = new ol.layer.Vector({
source: vectorSource,
})
markerLayer = vectorLayer;
map.addLayer(vectorLayer);
}
//var tileLayer = new BMap.TileLayer();
//tileLayer.getTilesUrl = function (tileCoord, zoom) {
// var x = tileCoord.x;
// var y = tileCoord.y;
// return '../File/Map/SD1-PC-2023-001/tiles/' + zoom + '/tile-' + x + '_' + y + '.png';
//}
//var MyMap = new BMap.MapType('MyMap', tileLayer, { minZoom: 3, maxZoom: 8 });
//var map = new BMap.Map('map', { mapType: MyMap });
//map.addControl(new BMap.NavigationControl( ));
//map.centerAndZoom(new BMap.Point(0, 0), 5);
////map.addEventListener('click', function (e) {
//// alert('点击位置经纬度:' + e.latlng.lng + ',' + e.latlng.lat);
//// // var marker1 = new BMap.Marker(new BMap.Point(e.latlng.lng, e.latlng.lat));
////// 在地图上添加点标记
////map.addOverlay(marker1);
////});
//map.addEventListener("click", function (e) {
// map.clearOverlays();
// var marker1 = new BMap.Marker(new BMap.Point(e.Dg.lng, e.Dg.lat));
// //// 在地图上添加点标记
// map.addOverlay(marker1);
// F( txtLoc).setValue(e.Dg.lng+';'+e.Dg.lat)
//}
//);
//var txtloc = F(txtLoc).getValue();
//if (txtloc != null && txtloc != '') {
// var lng = txtloc.split(";")[0];
// var lat = txtloc.split(";")[1];
// var marker1 = new BMap.Marker(new BMap.Point(lng, lat));
// //// 在地图上添加点标记
// map.addOverlay(marker1);
// }
});
@@ -6,27 +6,27 @@ namespace FineUIPro.Web.ProjectData
{
public partial class LocationSelect : PageBase
{
public string unitWorkId
public string MainItemId
{
get
{
return (string)ViewState["unitWorkId"];
return (string)ViewState["MainItemId"];
}
set
{
ViewState["unitWorkId"] = value;
ViewState["MainItemId"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
unitWorkId = Request.Params["unitWorkId"] ;
var unitWork = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.UnitWorkId == unitWorkId);
if (unitWork != null)
MainItemId = Request.Params["MainItemId"];
var MainItem = Funs.DB.ProjectData_MainItem.FirstOrDefault(x => x.MainItemId == MainItemId);
if (MainItem != null)
{
txtLoc.Text = unitWork.Coordinate;
txtLoc.Text = MainItem.Coordinate;
this.CurrUser.IdcardAddress = txtLoc.Text.Trim();
}
}
}
@@ -40,13 +40,14 @@ namespace FineUIPro.Web.ProjectData
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
var unitWork = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.UnitWorkId == unitWorkId);
if (unitWork != null)
var MainItem = Funs.DB.ProjectData_MainItem.FirstOrDefault(x => x.MainItemId == MainItemId);
if (MainItem != null)
{
unitWork.Coordinate=txtLoc.Text.Trim();
MainItem.Coordinate=txtLoc.Text.Trim();
Funs.DB.SubmitChanges();
}
PageContext.RegisterStartupScript( ActiveWindow.GetHidePostBackReference());
PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(txtLoc.Text.Trim())
+ ActiveWindow.GetHidePostBackReference());
}
#endregion
+14 -16
View File
@@ -7,13 +7,11 @@
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ProjectData
{
public partial class LocationSelect
{
namespace FineUIPro.Web.ProjectData {
public partial class LocationSelect {
/// <summary>
/// form1 控件。
/// </summary>
@@ -22,7 +20,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
@@ -31,7 +29,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// RegionPanel1 控件。
/// </summary>
@@ -40,7 +38,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RegionPanel RegionPanel1;
/// <summary>
/// Region2 控件。
/// </summary>
@@ -49,7 +47,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Region Region2;
/// <summary>
/// ContentPanel1 控件。
/// </summary>
@@ -58,7 +56,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ContentPanel ContentPanel1;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
@@ -67,7 +65,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// Toolbar1 控件。
/// </summary>
@@ -76,7 +74,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
@@ -85,7 +83,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnSave 控件。
/// </summary>
@@ -94,7 +92,7 @@ namespace FineUIPro.Web.ProjectData
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// txtLoc 控件。
/// </summary>
@@ -17,6 +17,7 @@
<Items>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
</f:ToolbarFill>
<f:TextBox runat="server" ID="hdCoordinate" Hidden="true"></f:TextBox>
<f:Button ID="btnSave" OnClick="btnSave_Click" Icon="SystemSave"
runat="server" Text="保存" ValidateForms="SimpleForm1">
</f:Button>
@@ -27,21 +28,21 @@
<f:FormRow>
<Items>
<f:Form ID="Form3" ShowBorder="false" ShowHeader="false" AutoScroll="true"
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right" LabelWidth="110px" >
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right" LabelWidth="110px">
<Rows>
<f:FormRow runat="server">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目" MaxLength="70" Readonly="true">
<f:TextBox ID="txtProjectName" runat="server" Label="项目" MaxLength="70" Readonly="true">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow runat="server">
<Items>
<f:TextBox ID="txtMainItemCode" runat="server" Label="主项编号"
Required="true" MaxLength="70" ShowRedStar="true" AutoPostBack="true" OnTextChanged="txtMainItemCode_TextChanged">
Required="true" MaxLength="70" ShowRedStar="true" AutoPostBack="true" OnTextChanged="txtMainItemCode_TextChanged">
</f:TextBox>
<f:TextBox ID="txtMainItemName" runat="server" Label="主项名称"
Required="true" MaxLength="70" ShowRedStar="true" >
Required="true" MaxLength="70" ShowRedStar="true">
</f:TextBox>
</Items>
</f:FormRow>
@@ -66,7 +67,14 @@
</f:FormRow>
<f:FormRow>
<Items>
<f:TextArea runat="server" ID="txtRemark" Label="备注" ></f:TextArea>
<f:TextArea runat="server" ID="txtRemark" Label="备注"></f:TextArea>
</Items>
</f:FormRow>
<f:FormRow ColumnWidths="5% 15% 80%">
<Items>
<f:Label runat="server" ID="Label1" Label="位置选择" LabelWidth="150px"></f:Label>
<f:Button runat="server" ID="Button1" OnClick="btnMap_Click" Text="选择"></f:Button>
<f:HiddenField runat="server" ID="HiddenField1"></f:HiddenField>
</Items>
</f:FormRow>
</Rows>
@@ -75,6 +83,10 @@
</f:FormRow>
</Rows>
</f:Form>
<f:Window ID="Window2" Title="位置选择" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" IsModal="true" OnClose="Window2_Close"
Width="860px" Height="660px">
</f:Window>
</form>
</body>
</html>
@@ -61,6 +61,7 @@ namespace FineUIPro.Web.ProjectData
{
txtCarryUnit.Values = MaineItem.DesignProfessionalIds.Split(',');
}
this.hdCoordinate.Text = MaineItem.Coordinate;
}
}
}
@@ -73,6 +74,7 @@ namespace FineUIPro.Web.ProjectData
maiItem.ProjectId = this.ProjectId;
maiItem.DesignProfessionalIds = string.Join(",", txtCarryUnit.Values);
maiItem.Remark = this.txtRemark.Text.Trim();
maiItem.Coordinate = this.hdCoordinate.Text;
if (!string.IsNullOrEmpty(MainItemId))
{
maiItem.MainItemId = MainItemId;
@@ -95,5 +97,23 @@ namespace FineUIPro.Web.ProjectData
return;
}
}
protected void btnMap_Click(object sender, EventArgs e)
{
string window = String.Format("LocationSelect.aspx?MainItemId=" + this.MainItemId);
PageContext.RegisterStartupScript(Window2.GetSaveStateReference(hdCoordinate.ClientID) + Window2.GetShowReference(window));
}
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window2_Close(object sender, EventArgs e)
{
}
#endregion
}
}
@@ -57,6 +57,15 @@ namespace FineUIPro.Web.ProjectData {
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// hdCoordinate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox hdCoordinate;
/// <summary>
/// btnSave 控件。
/// </summary>
@@ -128,5 +137,41 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtRemark;
/// <summary>
/// Label1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label Label1;
/// <summary>
/// Button1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button Button1;
/// <summary>
/// HiddenField1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField HiddenField1;
/// <summary>
/// Window2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window2;
}
}