/** * 百度地图API测试脚本 * 用于测试百度地图API服务是否正常工作 */ require('dotenv').config(); const axios = require('axios'); // 百度地图API密钥 const BAIDU_MAP_AK = process.env.BAIDU_MAP_AK || 'your_baidu_map_ak'; // 测试地理编码API async function testGeocode() { try { console.log('测试地理编码API...'); const address = '宁夏回族自治区银川市兴庆区北京东路'; const response = await axios.get('http://api.map.baidu.com/geocoding/v3', { params: { address, output: 'json', ak: BAIDU_MAP_AK } }); if (response.data.status === 0) { console.log('地理编码成功:'); console.log(`地址: ${address}`); console.log(`经度: ${response.data.result.location.lng}`); console.log(`纬度: ${response.data.result.location.lat}`); return true; } else { console.error('地理编码失败:', response.data.message); return false; } } catch (error) { console.error('地理编码测试错误:', error.message); return false; } } // 测试逆地理编码API async function testReverseGeocode() { try { console.log('\n测试逆地理编码API...'); // 银川市中心坐标 const lat = 38.4864; const lng = 106.2324; const response = await axios.get('http://api.map.baidu.com/reverse_geocoding/v3', { params: { location: `${lat},${lng}`, output: 'json', ak: BAIDU_MAP_AK } }); if (response.data.status === 0) { console.log('逆地理编码成功:'); console.log(`经度: ${lng}, 纬度: ${lat}`); console.log(`地址: ${response.data.result.formatted_address}`); return true; } else { console.error('逆地理编码失败:', response.data.message); return false; } } catch (error) { console.error('逆地理编码测试错误:', error.message); return false; } } // 测试IP定位API async function testIpLocation() { try { console.log('\n测试IP定位API...'); const response = await axios.get('http://api.map.baidu.com/location/ip', { params: { ak: BAIDU_MAP_AK, coor: 'bd09ll' } }); if (response.data.status === 0) { console.log('IP定位成功:'); console.log(`地址: ${response.data.content.address}`); console.log(`经度: ${response.data.content.point.x}`); console.log(`纬度: ${response.data.content.point.y}`); return true; } else { console.error('IP定位失败:', response.data.message); return false; } } catch (error) { console.error('IP定位测试错误:', error.message); return false; } } // 运行所有测试 async function runTests() { console.log('===== 百度地图API测试 ====='); console.log(`使用的API密钥: ${BAIDU_MAP_AK}`); if (BAIDU_MAP_AK === 'your_baidu_map_ak' || BAIDU_MAP_AK === 'your_baidu_map_ak_here') { console.warn('警告: 您正在使用默认API密钥,请在.env文件中设置有效的BAIDU_MAP_AK'); } console.log('\n开始测试...'); const geocodeResult = await testGeocode(); const reverseGeocodeResult = await testReverseGeocode(); const ipLocationResult = await testIpLocation(); console.log('\n===== 测试结果汇总 ====='); console.log(`地理编码API: ${geocodeResult ? '✅ 通过' : '❌ 失败'}`); console.log(`逆地理编码API: ${reverseGeocodeResult ? '✅ 通过' : '❌ 失败'}`); console.log(`IP定位API: ${ipLocationResult ? '✅ 通过' : '❌ 失败'}`); const allPassed = geocodeResult && reverseGeocodeResult && ipLocationResult; console.log(`\n总体结果: ${allPassed ? '✅ 所有测试通过' : '❌ 部分测试失败'}`); if (!allPassed) { console.log('\n可能的问题:'); console.log('1. API密钥无效或未正确设置'); console.log('2. 网络连接问题'); console.log('3. 百度地图API服务暂时不可用'); console.log('\n解决方案:'); console.log('1. 检查.env文件中的BAIDU_MAP_AK设置'); console.log('2. 确保您的网络可以访问百度地图API'); console.log('3. 稍后再试'); } } // 执行测试 runTests().catch(error => { console.error('测试执行错误:', error); });