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 } }) }