import request from '@/utils/request'
|
|
// 地图地址搜索API
|
export function searchAddress(keyword, region) {
|
// 参数验证
|
if (!keyword) {
|
return Promise.reject(new Error('参数不完整,缺少关键词'))
|
}
|
|
return request({
|
url: '/system/gps/address/search',
|
method: 'get',
|
params: {
|
keyword: keyword,
|
region: region || '广州'
|
}
|
})
|
}
|
|
// 地图逆地址解析API
|
export function reverseGeocoder(lat, lng) {
|
// 参数验证
|
if (lat === undefined || lat === null || lng === undefined || lng === null) {
|
return Promise.reject(new Error('参数不完整,缺少经纬度坐标'))
|
}
|
|
// 检查参数有效性
|
if (isNaN(lat) || isNaN(lng)) {
|
return Promise.reject(new Error('参数无效,经纬度坐标格式错误'))
|
}
|
|
return request({
|
url: '/system/gps/address/geocoder',
|
method: 'get',
|
params: {
|
lat: lat,
|
lng: lng
|
}
|
})
|
}
|
|
// 地图路线规划API(计算两点间距离)
|
export function calculateDistance(fromLat, fromLng, toLat, toLng) {
|
// 参数验证
|
if (fromLat === undefined || fromLat === null ||
|
fromLng === undefined || fromLng === null ||
|
toLat === undefined || toLat === null ||
|
toLng === undefined || toLng === null) {
|
return Promise.reject(new Error('参数不完整,缺少起点或终点坐标'))
|
}
|
|
// 检查参数有效性
|
if (isNaN(fromLat) || isNaN(fromLng) || isNaN(toLat) || isNaN(toLng)) {
|
return Promise.reject(new Error('参数无效,坐标格式错误'))
|
}
|
|
return request({
|
url: '/system/gps/route/distance',
|
method: 'get',
|
params: {
|
fromLat: fromLat,
|
fromLng: fromLng,
|
toLat: toLat,
|
toLng: toLng
|
}
|
})
|
}
|
|
// ==================== 百度地图接口 ====================
|
|
// 百度地图地理编码API(地址转坐标)
|
export function baiduGeocoding(address, city) {
|
// 参数验证
|
if (!address) {
|
return Promise.reject(new Error('参数不完整,缺少地址信息'))
|
}
|
|
return request({
|
url: '/system/gps/baidu/geocoding',
|
method: 'get',
|
params: {
|
address: address,
|
city: city
|
}
|
})
|
}
|
|
// 百度地图路线规划API(计算两个坐标之间的驾车距离)
|
export function baiduRouteDriving(origin, destination) {
|
// 参数验证
|
if (!origin || !destination) {
|
return Promise.reject(new Error('参数不完整,缺少起点或终点坐标'))
|
}
|
|
// 验证坐标格式(纬度,经度)
|
const originParts = origin.split(',')
|
const destParts = destination.split(',')
|
if (originParts.length !== 2 || destParts.length !== 2) {
|
return Promise.reject(new Error('坐标格式错误,应为:纬度,经度'))
|
}
|
|
return request({
|
url: '/system/gps/baidu/route/driving',
|
method: 'get',
|
params: {
|
origin: origin,
|
destination: destination
|
}
|
})
|
}
|
|
// 百度地图计算两个地址之间的距离(组合接口:地址转坐标 + 路线规划)
|
export function baiduDistanceByAddress(fromAddress, fromCity, toAddress, toCity) {
|
// 参数验证
|
if (!fromAddress || !toAddress) {
|
return Promise.reject(new Error('参数不完整,缺少起点或终点地址'))
|
}
|
|
return request({
|
url: '/system/gps/baidu/distance/byAddress',
|
method: 'get',
|
params: {
|
fromAddress: fromAddress,
|
fromCity: fromCity,
|
toAddress: toAddress,
|
toCity: toCity
|
}
|
})
|
}
|
|
// 百度地图地址搜索提示API(输入联想)
|
export function baiduPlaceSuggestion(query, region) {
|
// 参数验证
|
if (!query) {
|
return Promise.reject(new Error('参数不完整,缺少搜索关键词'))
|
}
|
|
return request({
|
url: '/system/gps/baidu/place/suggestion',
|
method: 'get',
|
params: {
|
query: query,
|
region: region || '广州'
|
}
|
})
|
}
|
|
// ==================== 天地图接口 ====================
|
|
// 天地图地理编码API(地址转坐标)
|
export function tiandituGeocoding(address) {
|
// 参数验证
|
if (!address) {
|
return Promise.reject(new Error('参数不完整,缺少地址信息'))
|
}
|
|
return request({
|
url: '/system/gps/tianditu/geocoding',
|
method: 'get',
|
params: {
|
address: address
|
}
|
})
|
}
|
|
// 天地图逆地理编码API(坐标转地址)
|
export function tiandituReverseGeocoding(lon, lat) {
|
// 参数验证
|
if (lat === undefined || lat === null || lon === undefined || lon === null) {
|
return Promise.reject(new Error('参数不完整,缺少经纬度坐标'))
|
}
|
|
// 检查参数有效性
|
if (isNaN(lat) || isNaN(lon)) {
|
return Promise.reject(new Error('参数无效,经纬度坐标格式错误'))
|
}
|
|
return request({
|
url: '/system/gps/tianditu/reverseGeocoding',
|
method: 'get',
|
params: {
|
lon: lon,
|
lat: lat
|
}
|
})
|
}
|
|
// 天地图POI搜索API
|
export function tiandituPlaceSearch(keyWord, queryType, level, mapBound, start, count) {
|
// 参数验证
|
if (!keyWord) {
|
return Promise.reject(new Error('参数不完整,缺少搜索关键词'))
|
}
|
|
return request({
|
url: '/system/gps/tianditu/place/search',
|
method: 'get',
|
params: {
|
keyWord: keyWord,
|
queryType: queryType || '1',
|
level: level,
|
mapBound: mapBound,
|
start: start || 0,
|
count: count || 10
|
}
|
})
|
}
|
|
// 天地图驾车路径规划API
|
export function tiandituRouteDriving(orig, dest, mid, style) {
|
// 参数验证
|
if (!orig || !dest) {
|
return Promise.reject(new Error('参数不完整,缺少起点或终点坐标'))
|
}
|
|
// 验证坐标格式(经度,纬度)
|
const origParts = orig.split(',')
|
const destParts = dest.split(',')
|
if (origParts.length !== 2 || destParts.length !== 2) {
|
return Promise.reject(new Error('坐标格式错误,应为:经度,纬度'))
|
}
|
|
return request({
|
url: '/system/gps/tianditu/route/driving',
|
method: 'get',
|
params: {
|
orig: orig,
|
dest: dest,
|
mid: mid,
|
style: style || '0'
|
}
|
})
|
}
|
|
// 天地图计算两个地址之间的距离(组合接口:地址转坐标 + 路径规划)
|
export function tiandituDistanceByAddress(fromAddress, toAddress) {
|
// 参数验证
|
if (!fromAddress || !toAddress) {
|
return Promise.reject(new Error('参数不完整,缺少起点或终点地址'))
|
}
|
|
return request({
|
url: '/system/gps/tianditu/distance/byAddress',
|
method: 'get',
|
params: {
|
fromAddress: fromAddress,
|
toAddress: toAddress
|
}
|
})
|
}
|
|
// 天地图普通搜索服务API(地址搜索)
|
export function tiandituPlaceSuggestion(keyWord, region, city, count) {
|
// 参数验证
|
if (!keyWord) {
|
return Promise.reject(new Error('参数不完整,缺少搜索关键词'))
|
}
|
|
return request({
|
url: '/system/gps/tianditu/place/suggestion',
|
method: 'get',
|
params: {
|
keyWord: keyWord,
|
region: region,
|
city: city,
|
count: count || 10
|
}
|
})
|
}
|