chore: initialize frontend miniapp repository

This commit is contained in:
lyf
2026-06-09 21:08:45 +08:00
commit a90f63cef0
107 changed files with 60454 additions and 0 deletions

View File

@@ -0,0 +1,128 @@
/**
* 获取建筑围栏坐标的脚本
* 使用腾讯地图 WebService API
*/
const https = require('https')
// 腾讯地图 WebService API Key需要在腾讯位置服务申请
const API_KEY = 'EJPBZ-DQEEQ-PDN5U-4ZDVX-F4I3F-6MBJC'
// 深圳自然博物馆坐标
const MUSEUM_LAT = 22.692763
const MUSEUM_LNG = 114.363487
/**
* 方法1地点搜索 - 获取POI详情
*/
function searchPlace() {
const url = `https://apis.map.qq.com/ws/place/v1/search?keyword=深圳自然博物馆&boundary=nearby(${MUSEUM_LAT},${MUSEUM_LNG},1000)&key=${API_KEY}`
https.get(url, (res) => {
let data = ''
res.on('data', (chunk) => { data += chunk })
res.on('end', () => {
const result = JSON.parse(data)
console.log('=== 地点搜索结果 ===')
console.log(JSON.stringify(result, null, 2))
if (result.status === 0 && result.data.length > 0) {
const poi = result.data[0]
console.log('\n建筑信息:')
console.log('名称:', poi.title)
console.log('地址:', poi.address)
console.log('坐标:', poi.location)
console.log('POI ID:', poi.id)
}
})
})
}
/**
* 方法2逆地址解析 - 获取周边建筑
*/
function reverseGeocode() {
const url = `https://apis.map.qq.com/ws/geocoder/v1/?location=${MUSEUM_LAT},${MUSEUM_LNG}&key=${API_KEY}&get_poi=1`
https.get(url, (res) => {
let data = ''
res.on('data', (chunk) => { data += chunk })
res.on('end', () => {
const result = JSON.parse(data)
console.log('\n=== 逆地址解析结果 ===')
console.log(JSON.stringify(result, null, 2))
})
})
}
/**
* 方法3手动计算矩形围栏
* 根据建筑大致尺寸估算
*/
function calculateRectangle(centerLat, centerLng, widthMeters, heightMeters) {
// 纬度1度 ≈ 111km
// 经度1度 ≈ 111km * cos(纬度)
const latPerMeter = 1 / 111000
const lngPerMeter = 1 / (111000 * Math.cos(centerLat * Math.PI / 180))
const halfWidth = widthMeters / 2
const halfHeight = heightMeters / 2
const polygon = {
points: [
{
latitude: centerLat + halfHeight * latPerMeter,
longitude: centerLng - halfWidth * lngPerMeter,
label: '西北角'
},
{
latitude: centerLat + halfHeight * latPerMeter,
longitude: centerLng + halfWidth * lngPerMeter,
label: '东北角'
},
{
latitude: centerLat - halfHeight * latPerMeter,
longitude: centerLng + halfWidth * lngPerMeter,
label: '东南角'
},
{
latitude: centerLat - halfHeight * latPerMeter,
longitude: centerLng - halfWidth * lngPerMeter,
label: '西南角'
},
],
strokeWidth: 3,
strokeColor: '#E0E100',
fillColor: '#E0E10020',
zIndex: 1
}
console.log('\n=== 计算的矩形围栏 ===')
console.log(`建筑尺寸: ${widthMeters}m × ${heightMeters}m`)
console.log('坐标点:')
polygon.points.forEach(point => {
console.log(` ${point.label}: ${point.latitude.toFixed(6)}, ${point.longitude.toFixed(6)}`)
})
console.log('\n复制到代码:')
console.log(JSON.stringify(polygon, null, 2))
return polygon
}
console.log('正在获取深圳自然博物馆建筑围栏信息...\n')
// 执行查询
searchPlace()
reverseGeocode()
// 假设建筑尺寸为 150m × 100m需要根据实际调整
setTimeout(() => {
console.log('\n' + '='.repeat(50))
calculateRectangle(MUSEUM_LAT, MUSEUM_LNG, 150, 100)
}, 2000)
console.log('\n提示:')
console.log('1. 如果API返回的数据中没有建筑轮廓需要手动标注')
console.log('2. 推荐使用腾讯地图坐标拾取器: https://lbs.qq.com/getPoint/')
console.log('3. 切换到卫星图模式,沿建筑外围点击获取坐标')
console.log('4. 或使用上面计算的矩形围栏,根据实际建筑尺寸调整参数')