From 2c104674ca7134e56833a6ea80cdda359f86085f Mon Sep 17 00:00:00 2001 From: zhaodengke Date: Fri, 13 Jun 2025 16:35:27 +0800 Subject: [PATCH] =?UTF-8?q?Task=20=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Map/MapGisTagDTGCopy.vue | 94 ++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) diff --git a/src/components/Map/MapGisTagDTGCopy.vue b/src/components/Map/MapGisTagDTGCopy.vue index adad61ae..bef9bbeb 100644 --- a/src/components/Map/MapGisTagDTGCopy.vue +++ b/src/components/Map/MapGisTagDTGCopy.vue @@ -3,6 +3,7 @@
+       @@ -27,6 +28,7 @@ uuidMap: this.guidProduct(), drawPolygonMap: this.guidProduct(), drawResetMap: this.guidProduct(), + locationMap: this.guidProduct(), mapGeoServerUrl: "", // geoserver地址 villageBorderLayerName: "", // 乡镇边界图层名称 }; @@ -68,6 +70,56 @@ return v.toString(16); }); }, + getCurrentLocation(callback) { + // 1. 首先尝试Android宿主端 + if(window._Native_object) // Android层注入全局对象 + { + console.log('使用Native获取定位'); + let coord = window._Native_object.GetLocation(null); + console.log('Native坐标: ' + coord); + if(coord) + { + let arr = coord.split(','); + let res = { + code: 200, + data: { + lng: arr[0], + lat: arr[1], + }, + }; + callback(res); + return; + } + } + + // 2. 再尝试浏览器 + if (navigator.geolocation) { + console.log('使用浏览器获取定位'); + navigator.geolocation.getCurrentPosition( + (position) => { + const { latitude, longitude } = position.coords; + let res = { + code: 200, + data: { + lng: longitude, + lat: latitude, + }, + }; + callback(res); + }, + (error) => { + console.log('定位失败: ' + error.message); + getQueryLand().then(callback); + }, + { enableHighAccuracy: true, timeout: 10000 } + ); + return; + } + + // 最后使用地区坐标 + console.log('使用地区坐标定位'); + getQueryLand().then(callback); + }, //地图查看 pointPaceCountryDarw() { //加载地图编辑 @@ -337,6 +389,26 @@ that.formSubmit(); } }); + $("#" + this.locationMap).click(function () { + that.getCurrentLocation(res => { + if (res.code == 200) { + let lat = res.data.lat; + let lng = res.data.lng; + if(lat && lng){ + Zb = [lng,lat]; + }else { + Zb =[115.452752, 31.789033]; + } + map.getView().animate({ + // 只设置需要的属性即可 + center: ol.proj.fromLonLat(Zb), // 中心点 + zoom: 15.9, // 缩放级别 + rotation: undefined, // 缩放完成view视图旋转弧度 + duration: 1000, // 缩放持续时间,默认不需要设置 + }); + } + }); + }); } else{ this.closeMoule = null; @@ -368,7 +440,7 @@ //获取坐标是否存在 var Zb; //开始定位当前位置 - getQueryLand().then(res => { + this.getCurrentLocation(res => { if (res.code == 200) { let lat = res.data.lat; let lng = res.data.lng; @@ -519,6 +591,26 @@ that.closeMoule = null; that.formSubmit(); }); + $("#" + this.locationMap).click(function () { + that.getCurrentLocation(res => { + if (res.code == 200) { + let lat = res.data.lat; + let lng = res.data.lng; + if(lat && lng){ + Zb = [lng,lat]; + }else { + Zb =[115.452752, 31.789033]; + } + map.getView().animate({ + // 只设置需要的属性即可 + center: ol.proj.fromLonLat(Zb), // 中心点 + zoom: 15.9, // 缩放级别 + rotation: undefined, // 缩放完成view视图旋转弧度 + duration: 1000, // 缩放持续时间,默认不需要设置 + }); + } + }); + }); } }, },