Files
supplier-dispatch-h5/src/utils/map.js
2025-06-12 10:27:59 +08:00

112 lines
3.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 获取定位, 返回 经纬度
export function getLocal(mapContext) {
return new Promise((resolve, reject) => {
mapContext.plugin('AMap.Geolocation', function () {
let geolocation = new AMap.Geolocation({
enableHighAccuracy: true, // 是否使用高精度定位默认true
timeout: 10000, // 设置定位超时时间,默认:无穷大
offset: [10, 20], // 定位按钮的停靠位置的偏移量
zoomToAccuracy: true, // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见默认false
position: 'RB' // 定位按钮的排放位置, RB表示右下
})
geolocation.getCurrentPosition(function(status, result){
if(status == 'complete'){
resolve(result.position)
}else{
reject(result)
}
});
})
})
}
// 逆地址解析,根据经纬度获取详细地址
export function getAddress(mapContext, lnglat) {
return new Promise((resolve, reject) => {
mapContext.plugin('AMap.Geocoder', function () {
let geocoder = new AMap.Geocoder({
// city: "010", //城市设为北京,默认:“全国”
});
geocoder.getAddress(lnglat, function(status, result) {
if (status === 'complete' && result.info === 'OK') {
// result为对应的地理位置详细信息
resolve(result)
} else {
console.log(result)
alert(JSON.stringify(result))
reject(result)
}
})
})
})
}
// 输入提示
export function searchFun(mapContext, cityCode, keyword) {
return new Promise((resolve) => {
mapContext.plugin('AMap.AutoComplete', function(){
var autoOptions = {
city: cityCode || '全国',
};
// 实例化AutoComplete
var autoComplete= new AMap.AutoComplete(autoOptions);
// 根据关键字进行搜索
autoComplete.search(keyword, function(status, result) {
// 搜索成功时result即是对应的匹配数据
if(result.info == 'OK') {
resolve(result.tips)
} else {
resolve([])
}
})
})
})
}
// 路径规划
export function getRoad( mapContext, startLng, startLat, endLng, endLat ) {
return new Promise((resolve, reject) => {
mapContext.plugin('AMap.Driving', function() {
let driving = new AMap.Driving({
// 驾车路线规划策略AMap.DrivingPolicy.LEAST_TIME是最快捷模式
// policy: AMap.DrivingPolicy.LEAST_TIME,
// map: mapContext
})
let startLngLat = [startLng, startLat]
let endLngLat = [endLng, endLat]
driving.search(startLngLat, endLngLat, function (status, result) {
// 未出错时result即是对应的路线规划方案
if (status === 'complete') {
resolve(result)
} else {
reject(result)
}
})
})
})
}
/*
function drawRoute(route, map) {
let path = parseRouteToPath(route)
let routeLine = new AMap.Polyline({
path: path,
isOutline: true,
outlineColor: '#ffeeee',
borderWeight: 2,
strokeWeight: 5,
strokeOpacity: 0.9,
strokeColor: '#0091ff',
lineJoin: 'round'
})
map.add(routeLine);
}
*/