feat:新增地图视图效果,接口待对接
This commit is contained in:
+155
@@ -0,0 +1,155 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../common/vendor.js");
|
||||
const AMAP_KEY = "4c513a688938fd89b88b296e867f66ec";
|
||||
class AmapUtil {
|
||||
constructor() {
|
||||
this.key = AMAP_KEY;
|
||||
}
|
||||
// 逆地理编码 - 根据经纬度获取地址信息
|
||||
async regeocode(longitude, latitude) {
|
||||
try {
|
||||
const res = await common_vendor.index.request({
|
||||
url: "https://restapi.amap.com/v3/geocode/regeo",
|
||||
method: "GET",
|
||||
data: {
|
||||
key: this.key,
|
||||
location: `${longitude},${latitude}`,
|
||||
poitype: "",
|
||||
radius: 1e3,
|
||||
extensions: "base",
|
||||
batch: false,
|
||||
roadlevel: 0
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.status === "1") {
|
||||
return {
|
||||
success: true,
|
||||
data: res.data.regeocode
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
message: res.data.info || "逆地理编码失败"
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at utils/amap.js:38", "逆地理编码异常:", error);
|
||||
return {
|
||||
success: false,
|
||||
message: "网络异常"
|
||||
};
|
||||
}
|
||||
}
|
||||
// 地理编码 - 根据地址获取经纬度
|
||||
async geocode(address, city = "") {
|
||||
try {
|
||||
const res = await common_vendor.index.request({
|
||||
url: "https://restapi.amap.com/v3/geocode/geo",
|
||||
method: "GET",
|
||||
data: {
|
||||
key: this.key,
|
||||
address,
|
||||
city
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.status === "1" && res.data.geocodes.length > 0) {
|
||||
return {
|
||||
success: true,
|
||||
data: res.data.geocodes[0]
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
message: res.data.info || "地理编码失败"
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at utils/amap.js:71", "地理编码异常:", error);
|
||||
return {
|
||||
success: false,
|
||||
message: "网络异常"
|
||||
};
|
||||
}
|
||||
}
|
||||
// 搜索POI
|
||||
async searchPOI(keywords, location = "", radius = 3e3, city = "") {
|
||||
try {
|
||||
const res = await common_vendor.index.request({
|
||||
url: "https://restapi.amap.com/v3/place/text",
|
||||
method: "GET",
|
||||
data: {
|
||||
key: this.key,
|
||||
keywords,
|
||||
location,
|
||||
radius,
|
||||
city,
|
||||
citylimit: true
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.status === "1") {
|
||||
return {
|
||||
success: true,
|
||||
data: res.data.pois || []
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
message: res.data.info || "搜索失败"
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at utils/amap.js:107", "POI搜索异常:", error);
|
||||
return {
|
||||
success: false,
|
||||
message: "网络异常"
|
||||
};
|
||||
}
|
||||
}
|
||||
// 路径规划
|
||||
async getRoute(origin, destination, strategy = 0) {
|
||||
try {
|
||||
const res = await common_vendor.index.request({
|
||||
url: "https://restapi.amap.com/v3/direction/driving",
|
||||
method: "GET",
|
||||
data: {
|
||||
key: this.key,
|
||||
origin,
|
||||
destination,
|
||||
strategy,
|
||||
extensions: "base"
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.status === "1") {
|
||||
return {
|
||||
success: true,
|
||||
data: res.data.route
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
message: res.data.info || "路径规划失败"
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at utils/amap.js:142", "路径规划异常:", error);
|
||||
return {
|
||||
success: false,
|
||||
message: "网络异常"
|
||||
};
|
||||
}
|
||||
}
|
||||
// 计算两点间距离
|
||||
calculateDistance(lat1, lng1, lat2, lng2) {
|
||||
const radLat1 = lat1 * Math.PI / 180;
|
||||
const radLat2 = lat2 * Math.PI / 180;
|
||||
const a = radLat1 - radLat2;
|
||||
const b = lng1 * Math.PI / 180 - lng2 * Math.PI / 180;
|
||||
let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
|
||||
s = s * 6378.137;
|
||||
s = Math.round(s * 1e4) / 1e4;
|
||||
return s;
|
||||
}
|
||||
}
|
||||
const AmapUtil$1 = new AmapUtil();
|
||||
exports.AmapUtil = AmapUtil$1;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/amap.js.map
|
||||
Reference in New Issue
Block a user