wlzboy
2025-11-22 fd047fa7234dc11643dab8ecbf38e8d7a8ba0854
app/api/map.js
@@ -46,12 +46,12 @@
      fromLng === undefined || fromLng === null ||
      toLat === undefined || toLat === null ||
      toLng === undefined || toLng === null) {
    return Promise.reject(new Error('参数不完整,缺少起点或终点坐标'))
    return Promise.reject(new Error('参数不完整,缺少起点或终点坐标'))
  }
  
  // 检查参数有效性
  if (isNaN(fromLat) || isNaN(fromLng) || isNaN(toLat) || isNaN(toLng)) {
    return Promise.reject(new Error('参数无效,坐标格式错误'))
    return Promise.reject(new Error('参数无效,坐标格式错误'))
  }
  
  return request({
@@ -64,4 +64,206 @@
      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
    }
  })
}