map.js修改

This commit is contained in:
小小 2025-04-29 16:36:28 +08:00
parent b6b8b8eb2f
commit 97fc4a14bb

View File

@ -13,7 +13,7 @@ export const getMap = (mapid, instance) => {
}); });
} }
//获取当前定位 //获取当前定位
export const getLoalcation = (oMap, success, fail,nomove) => { export const getLoalcation = (oMap, success, fail, nomove) => {
uni.getLocation({ uni.getLocation({
type: 'gcj02', // 返回可以用于 wx.openLocation 的经纬度 type: 'gcj02', // 返回可以用于 wx.openLocation 的经纬度
geocode: true, geocode: true,
@ -22,7 +22,7 @@ export const getLoalcation = (oMap, success, fail,nomove) => {
latitude, latitude,
longitude longitude
} = res; } = res;
if(!nomove){ if (!nomove) {
moveToLocation(oMap, longitude, latitude); moveToLocation(oMap, longitude, latitude);
} }
// if (markers) { //定位 // if (markers) { //定位
@ -203,8 +203,71 @@ export const moveToLocation = (oMap, longitude, latitude) => {
oMap.moveToLocation(point); oMap.moveToLocation(point);
} }
//运营区
export function getOperation(zoneId, callback) {
const params = {
zoneId
}
api.callOperateApi("ebikeRegion/getOperation", params, "get").then((res) => {
const {
code,
message,
data
} = res;
if (code != 200) {
showModelMessage(message);
if(callback) callback(null);
return;
}
const arrCircles = [];
const arrPolygons = [];
const arrRegionID = [];
const arrCirclesData=[];
const arrPolygonsData = [];
data.map((item, index) => {
const {
shapeType,
regionId,
radius,
points
} = item;
arrRegionID.push(regionId);
const scolor = "#578FD4";
const fcolor = "rgba(192,218,245,0.3)";
if (shapeType == 1) {
const {
longitude: lng,
latitude: lat
} = points[0];
arrCirclesData.push(item);
arrCircles.push(addCirle(scolor, fcolor, lng, lat, radius));
} else if (shapeType == 2) {
const arrPoint = points.map(p => {
return {
longitude: p.longitude,
latitude: p.latitude
}
})
arrPolygonsData.push(item);
arrPolygons.push(addPolygon(scolor, fcolor, arrPoint));
}
});
if(callback) callback({
arrRegionID,
arrCircles,
arrPolygons,
arrData: data,
arrCirclesData,
arrPolygonsData
});
})
};
//站点、停车区 //站点、停车区
export const getRegionData = (arrRegionID, callback) => { export function getRegionData (arrRegionID, callback) {
if (!arrRegionID || arrRegionID.length == 0) return; if (!arrRegionID || arrRegionID.length == 0) return;
const arrMethods = []; const arrMethods = [];
arrRegionID.map(regionId => { arrRegionID.map(regionId => {
@ -218,6 +281,8 @@ export const getRegionData = (arrRegionID, callback) => {
const arrCircles = []; const arrCircles = [];
const arrPolygons = []; const arrPolygons = [];
const arrData = []; const arrData = [];
const arrCirclesData=[];
const arrPolygonsData = [];
res.map(item => { res.map(item => {
const { const {
code, code,
@ -240,7 +305,8 @@ export const getRegionData = (arrRegionID, callback) => {
longitude: lng, longitude: lng,
latitude: lat latitude: lat
} = points[0]; } = points[0];
arrCircles.push(addCirle(scolor, fcolor, lng, lat, radius)); arrCircles.push(addCirle(scolor, fcolor, lng, lat,radius));
arrCirclesData.push(data);
} else if (shapeType == 2) { } else if (shapeType == 2) {
const arrPoint = points.map(p => { const arrPoint = points.map(p => {
return { return {
@ -249,6 +315,7 @@ export const getRegionData = (arrRegionID, callback) => {
} }
}) })
arrPolygons.push(addPolygon(scolor, fcolor, arrPoint)); arrPolygons.push(addPolygon(scolor, fcolor, arrPoint));
arrPolygonsData.push(data);
} }
}) })
}) })
@ -368,8 +435,6 @@ export function direction({
latitude: elat latitude: elat
}, },
success: (res) => { success: (res) => {
console.log("111111111111111111",res)
const { const {
polyline, polyline,
distance distance
@ -387,7 +452,7 @@ export function direction({
} }
const cnt = (distance / 1000).toFixed(2); const cnt = (distance / 1000).toFixed(2);
let sdistance = distance + "m"; let sdistance = distance + "m";
if (cnt >= 1){ if (cnt >= 1) {
sdistance = cnt + "km"; sdistance = cnt + "km";
} }
const data = { const data = {
@ -403,3 +468,33 @@ export function direction({
} }
qqmapsdk.direction(options); qqmapsdk.direction(options);
} }
// 几何中心计算算法(适用于任意多边形)
export function getPolygonCenter(points) {
let X = 0, Y = 0, Z = 0;
const pointCount = points.length;
points.forEach(point => {
const lat = point.latitude * Math.PI / 180;
const lng = point.longitude * Math.PI / 180;
const x = Math.cos(lat) * Math.cos(lng);
const y = Math.cos(lat) * Math.sin(lng);
const z = Math.sin(lat);
X += x;
Y += y;
Z += z;
});
X /= pointCount;
Y /= pointCount;
Z /= pointCount;
const lng = Math.atan2(Y, X);
const lat = Math.atan2(Z, Math.sqrt(X * X + Y * Y));
return {
lat: lat * 180 / Math.PI,
lng: lng * 180 / Math.PI
};
}