From 83b03bc9d12daa38de0d503b1b7cf2cdd788f1ae Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 11 Aug 2025 15:13:06 +0000 Subject: [PATCH] Create Chinese travel map app with map visualization and city tracking Co-authored-by: beech_cantors_4l --- README.md | 108 ++++++++- app.js | 598 ++++++++++++++++++++++++++++++++++++++++++++++ china-cities.json | 384 +++++++++++++++++++++++++++++ index.html | 450 ++++++++++++++++++++++++++++++++++ 4 files changed, 1538 insertions(+), 2 deletions(-) create mode 100644 app.js create mode 100644 china-cities.json create mode 100644 index.html diff --git a/README.md b/README.md index 730b02c..c8c9034 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,106 @@ -# cursor_test -first time use cursor to create a project +# 我的中国旅行地图 + +一个用于记录您已经访问过的中国城市的可视化应用,以中国地图的形式呈现,可以记录初次到访的时间和备注。 + +## 功能特点 + +### 🗺️ 地图可视化 +- 基于 D3.js 的中国地图显示 +- 包含全国 300+ 个主要城市 +- 已访问城市用绿色标记,未访问城市用红色标记 +- 省会城市和直辖市会显示标签名称 + +### 📝 访问记录 +- 点击城市即可记录访问信息 +- 记录初次访问日期 +- 添加访问备注(如旅游、出差、探亲等) +- 已访问城市可以查看详情或删除记录 + +### 🔍 搜索功能 +- 支持按城市名或省份名搜索 +- 实时过滤城市列表 +- 点击列表中的城市可高亮地图上的位置 + +### 📊 统计信息 +- 显示已访问城市总数 +- 显示覆盖的省份数量 +- 计算旅行完成度百分比 + +### 💾 数据管理 +- 自动保存到浏览器本地存储 +- 支持导出数据为 JSON 文件 +- 支持导入之前的数据文件 +- 一键清除所有数据 + +## 使用方法 + +### 基本操作 +1. **记录访问**:点击地图上的红色城市圆点 +2. **查看信息**:鼠标悬停在城市上查看详情 +3. **管理记录**:点击已访问的绿色城市圆点查看或删除记录 +4. **搜索城市**:在左侧搜索框输入城市名或省份名 + +### 快捷键 +- `Ctrl + E`:导出数据 +- `Ctrl + I`:导入数据 +- `ESC`:关闭模态框 + +### 数据备份 +建议定期使用"导出数据"功能备份您的旅行记录,导出的 JSON 文件可以在其他设备上导入使用。 + +## 技术架构 + +- **前端框架**:原生 JavaScript + HTML5 + CSS3 +- **数据可视化**:D3.js v7 +- **地图投影**:Mercator 投影 +- **数据存储**:localStorage +- **数据格式**:JSON + +## 文件结构 + +``` +├── index.html # 主页面 +├── app.js # 应用逻辑 +├── china-cities.json # 城市数据 +└── README.md # 说明文档 +``` + +## 城市数据 + +应用包含中国大陆、台湾、香港、澳门的主要城市: +- 4个直辖市 +- 34个省/自治区/特别行政区 +- 300+ 个地级市 +- 精确的经纬度坐标 + +## 浏览器支持 + +- Chrome 60+ +- Firefox 55+ +- Safari 12+ +- Edge 79+ + +## 开始使用 + +1. 确保所有文件在同一目录下 +2. 使用现代浏览器打开 `index.html` +3. 开始记录您的旅行足迹! + +## 更新日志 + +### v1.0.0 (2024) +- 初始版本发布 +- 基础地图可视化 +- 城市访问记录功能 +- 数据导入导出 +- 搜索和统计功能 + +## 注意事项 + +- 数据保存在浏览器本地,清除浏览器数据会丢失记录 +- 建议定期导出数据进行备份 +- 应用需要在 HTTP 服务器环境下运行(不能直接用 file:// 协议) + +--- + +**享受记录旅行的乐趣!** 🎉 diff --git a/app.js b/app.js new file mode 100644 index 0000000..a96767b --- /dev/null +++ b/app.js @@ -0,0 +1,598 @@ +// 全局变量 +let citiesData = []; +let provincesData = []; +let visitedCities = {}; +let currentSelectedCity = null; +let svg = null; +let projection = null; +let path = null; + +// 中国地图的地理范围 +const CHINA_BOUNDS = { + north: 53.5, + south: 18.1, + west: 73.5, + east: 135.0 +}; + +// 初始化应用 +document.addEventListener('DOMContentLoaded', function() { + loadData(); + setupEventListeners(); + loadVisitedCities(); +}); + +// 加载城市数据 +async function loadData() { + // 显示加载提示 + const mapContainer = document.querySelector('.map-container'); + mapContainer.innerHTML = '
正在加载地图数据
'; + + try { + const response = await fetch('china-cities.json'); + const data = await response.json(); + citiesData = data.cities; + provincesData = data.provinces; + + // 清除加载提示 + mapContainer.innerHTML = ''; + + initializeMap(); + renderCityList(); + updateStats(); + + showSuccessMessage('地图加载完成!'); + } catch (error) { + console.error('Error loading data:', error); + mapContainer.innerHTML = '
数据加载失败,请检查china-cities.json文件是否存在
'; + } +} + +// 初始化地图 +function initializeMap() { + const mapContainer = d3.select('#map-svg'); + const containerRect = mapContainer.node().getBoundingClientRect(); + + const width = containerRect.width || 800; + const height = containerRect.height || 600; + + mapContainer.attr('width', width).attr('height', height); + + // 创建投影 + projection = d3.geoMercator() + .center([104, 35.5]) + .scale(width / 8) + .translate([width / 2, height / 2]); + + path = d3.geoPath().projection(projection); + + svg = mapContainer; + + // 由于我们没有省份边界的GeoJSON,我们使用简化的方法 + // 绘制城市点 + renderCities(); +} + +// 渲染城市点 +function renderCities() { + const cityGroups = svg.selectAll('.city-group') + .data(citiesData) + .enter() + .append('g') + .attr('class', 'city-group'); + + // 添加城市圆点 + cityGroups.append('circle') + .attr('class', d => `city-marker ${isVisited(d.name) ? 'visited' : ''}`) + .attr('cx', d => projection([d.longitude, d.latitude])[0]) + .attr('cy', d => projection([d.longitude, d.latitude])[1]) + .attr('r', d => getCityRadius(d)) + .on('click', function(event, d) { + handleCityClick(d); + }) + .on('mouseover', function(event, d) { + showTooltip(event, d); + }) + .on('mouseout', hideTooltip); + + // 添加省会城市标签 + cityGroups.filter(d => d.level === 'capital' || d.level === 'municipality') + .append('text') + .attr('x', d => projection([d.longitude, d.latitude])[0]) + .attr('y', d => projection([d.longitude, d.latitude])[1] - 8) + .attr('text-anchor', 'middle') + .style('font-size', '10px') + .style('font-weight', 'bold') + .style('fill', '#333') + .style('pointer-events', 'none') + .text(d => d.name.replace('市', '')); +} + +// 获取城市圆点大小 +function getCityRadius(city) { + switch(city.level) { + case 'capital': return 6; + case 'municipality': return 5; + case 'sar': return 4; + default: return 3; + } +} + +// 检查城市是否已访问 +function isVisited(cityName) { + return visitedCities.hasOwnProperty(cityName); +} + +// 处理城市点击 +function handleCityClick(city) { + currentSelectedCity = city; + + if (isVisited(city.name)) { + // 如果已访问,显示访问信息 + showVisitInfo(city); + } else { + // 如果未访问,显示添加访问记录的模态框 + showVisitModal(city); + } +} + +// 显示访问信息 +function showVisitInfo(city) { + const visitInfo = visitedCities[city.name]; + const message = `${city.name}\n访问日期: ${visitInfo.date}\n${visitInfo.notes ? '备注: ' + visitInfo.notes : ''}`; + + if (confirm(message + '\n\n点击确定删除此访问记录,点击取消关闭')) { + removeVisit(city.name); + } +} + +// 显示访问记录模态框 +function showVisitModal(city) { + document.getElementById('modal-title').textContent = `记录访问 - ${city.name}`; + document.getElementById('visit-date').value = new Date().toISOString().split('T')[0]; + document.getElementById('visit-notes').value = ''; + document.getElementById('visit-modal').style.display = 'block'; +} + +// 关闭模态框 +function closeModal() { + document.getElementById('visit-modal').style.display = 'none'; + currentSelectedCity = null; +} + +// 保存访问记录 +function saveVisit() { + if (!currentSelectedCity) return; + + const date = document.getElementById('visit-date').value; + const notes = document.getElementById('visit-notes').value; + + if (!date) { + alert('请选择访问日期'); + return; + } + + visitedCities[currentSelectedCity.name] = { + date: date, + notes: notes, + city: currentSelectedCity.name, + province: currentSelectedCity.province + }; + + saveVisitedCities(); + updateCityDisplay(currentSelectedCity); + updateStats(); + renderCityList(); + closeModal(); + + showSuccessMessage(`已记录访问 ${currentSelectedCity.name}`); +} + +// 移除访问记录 +function removeVisit(cityName) { + delete visitedCities[cityName]; + const city = citiesData.find(c => c.name === cityName); + if (city) { + updateCityDisplay(city); + } + saveVisitedCities(); + updateStats(); + renderCityList(); +} + +// 更新城市显示 +function updateCityDisplay(city) { + svg.selectAll('.city-marker') + .filter(d => d.name === city.name) + .classed('visited', isVisited(city.name)); +} + +// 显示提示框 +function showTooltip(event, city) { + const tooltip = document.getElementById('tooltip'); + const visitInfo = visitedCities[city.name]; + + let content = `${city.name} (${city.province})`; + if (visitInfo) { + content += `\n首次访问: ${visitInfo.date}`; + if (visitInfo.notes) { + content += `\n${visitInfo.notes}`; + } + } + + tooltip.innerHTML = content.replace(/\n/g, '
'); + tooltip.style.left = event.pageX + 10 + 'px'; + tooltip.style.top = event.pageY - 10 + 'px'; + tooltip.style.opacity = 1; +} + +// 隐藏提示框 +function hideTooltip() { + document.getElementById('tooltip').style.opacity = 0; +} + +// 渲染城市列表 +function renderCityList() { + const cityList = document.getElementById('city-list'); + const searchTerm = document.getElementById('city-search').value.toLowerCase(); + + // 过滤城市 + const filteredCities = citiesData.filter(city => + city.name.toLowerCase().includes(searchTerm) || + city.province.toLowerCase().includes(searchTerm) + ); + + // 按省份分组 + const groupedCities = {}; + filteredCities.forEach(city => { + if (!groupedCities[city.province]) { + groupedCities[city.province] = []; + } + groupedCities[city.province].push(city); + }); + + cityList.innerHTML = ''; + + Object.keys(groupedCities).sort().forEach(province => { + // 省份标题 + const provinceHeader = document.createElement('div'); + provinceHeader.className = 'province-header'; + provinceHeader.style.cssText = 'font-weight: bold; background: #f0f0f0; padding: 8px; margin: 5px 0 2px 0; border-radius: 4px;'; + provinceHeader.textContent = province; + cityList.appendChild(provinceHeader); + + // 城市列表 + groupedCities[province].forEach(city => { + const cityItem = document.createElement('div'); + cityItem.className = `city-item ${isVisited(city.name) ? 'visited' : ''}`; + + const cityInfo = document.createElement('div'); + cityInfo.textContent = city.name; + + const visitDate = document.createElement('div'); + visitDate.className = 'visit-date'; + if (isVisited(city.name)) { + visitDate.textContent = visitedCities[city.name].date; + } + + cityItem.appendChild(cityInfo); + cityItem.appendChild(visitDate); + + cityItem.addEventListener('click', () => { + handleCityClick(city); + // 高亮地图上的城市 + highlightCity(city); + }); + + cityList.appendChild(cityItem); + }); + }); +} + +// 高亮城市 +function highlightCity(city) { + // 移除之前的高亮 + svg.selectAll('.city-marker').classed('highlight', false); + + // 添加新的高亮 + svg.selectAll('.city-marker') + .filter(d => d.name === city.name) + .classed('highlight', true); + + // 简单的缩放到城市 + const [x, y] = projection([city.longitude, city.latitude]); + const transform = d3.zoomIdentity.translate(-x + svg.attr('width') / 2, -y + svg.attr('height') / 2).scale(2); + + // 添加高亮样式 + const style = document.createElement('style'); + style.textContent = ` + .city-marker.highlight { + fill: #ff9800 !important; + stroke: #fff !important; + stroke-width: 3px !important; + r: 8 !important; + } + `; + if (!document.getElementById('highlight-style')) { + style.id = 'highlight-style'; + document.head.appendChild(style); + } + + // 3秒后移除高亮 + setTimeout(() => { + svg.selectAll('.city-marker').classed('highlight', false); + }, 3000); +} + +// 更新统计信息 +function updateStats() { + const visitedCount = Object.keys(visitedCities).length; + const totalCities = citiesData.length; + + // 计算覆盖的省份 + const visitedProvinces = new Set(); + Object.values(visitedCities).forEach(visit => { + visitedProvinces.add(visit.province); + }); + + const completionRate = ((visitedCount / totalCities) * 100).toFixed(1); + + document.getElementById('visited-count').textContent = visitedCount; + document.getElementById('province-count').textContent = visitedProvinces.size; + document.getElementById('completion-rate').textContent = completionRate + '%'; +} + +// 设置事件监听器 +function setupEventListeners() { + // 搜索框 + document.getElementById('city-search').addEventListener('input', debounce(renderCityList, 300)); + + // 模态框关闭 + window.addEventListener('click', function(event) { + const modal = document.getElementById('visit-modal'); + if (event.target === modal) { + closeModal(); + } + }); + + // 窗口大小变化时重新调整地图 + window.addEventListener('resize', debounce(function() { + const mapContainer = d3.select('#map-svg'); + const containerRect = mapContainer.node().getBoundingClientRect(); + const width = containerRect.width || 800; + const height = containerRect.height || 600; + + mapContainer.attr('width', width).attr('height', height); + + projection = d3.geoMercator() + .center([104, 35.5]) + .scale(width / 8) + .translate([width / 2, height / 2]); + + path = d3.geoPath().projection(projection); + + // 重新渲染城市 + svg.selectAll('.city-group').remove(); + renderCities(); + }, 500)); +} + +// 防抖函数 +function debounce(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; +} + +// 保存访问数据到localStorage +function saveVisitedCities() { + localStorage.setItem('visitedCities', JSON.stringify(visitedCities)); +} + +// 从localStorage加载访问数据 +function loadVisitedCities() { + const saved = localStorage.getItem('visitedCities'); + if (saved) { + try { + visitedCities = JSON.parse(saved); + } catch (error) { + console.error('Error loading visited cities:', error); + visitedCities = {}; + } + } +} + +// 导出数据 +function exportData() { + const data = { + visitedCities: visitedCities, + exportDate: new Date().toISOString(), + totalCities: Object.keys(visitedCities).length + }; + + const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `我的旅行记录_${new Date().toISOString().split('T')[0]}.json`; + a.click(); + URL.revokeObjectURL(url); +} + +// 导入数据 +function importData() { + const input = document.createElement('input'); + input.type = 'file'; + input.accept = '.json'; + input.onchange = function(event) { + const file = event.target.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = function(e) { + try { + const data = JSON.parse(e.target.result); + if (data.visitedCities) { + if (confirm('导入数据将覆盖现有记录,是否继续?')) { + visitedCities = data.visitedCities; + saveVisitedCities(); + + // 更新显示 + svg.selectAll('.city-marker') + .classed('visited', d => isVisited(d.name)); + + updateStats(); + renderCityList(); + alert('数据导入成功!'); + } + } else { + alert('无效的数据文件格式'); + } + } catch (error) { + alert('文件格式错误'); + } + }; + reader.readAsText(file); + } + }; + input.click(); +} + +// 清除所有数据 +function clearAllData() { + if (confirm('确定要清除所有访问记录吗?此操作不可撤销!')) { + visitedCities = {}; + saveVisitedCities(); + + // 更新显示 + svg.selectAll('.city-marker').classed('visited', false); + updateStats(); + renderCityList(); + alert('所有数据已清除'); + } +} + +// 键盘快捷键 +document.addEventListener('keydown', function(event) { + // ESC键关闭模态框 + if (event.key === 'Escape') { + closeModal(); + } + + // Ctrl+E 导出数据 + if (event.ctrlKey && event.key === 'e') { + event.preventDefault(); + exportData(); + } + + // Ctrl+I 导入数据 + if (event.ctrlKey && event.key === 'i') { + event.preventDefault(); + importData(); + } +}); + +// 添加一些实用的辅助函数 + +// 获取某个省份的访问统计 +function getProvinceStats(provinceName) { + const provinceCities = citiesData.filter(city => city.province === provinceName); + const visitedInProvince = provinceCities.filter(city => isVisited(city.name)); + + return { + total: provinceCities.length, + visited: visitedInProvince.length, + percentage: ((visitedInProvince.length / provinceCities.length) * 100).toFixed(1) + }; +} + +// 获取访问时间线 +function getVisitTimeline() { + const timeline = Object.values(visitedCities) + .sort((a, b) => new Date(a.date) - new Date(b.date)); + return timeline; +} + +// 获取最近访问的城市 +function getRecentVisits(limit = 5) { + return Object.values(visitedCities) + .sort((a, b) => new Date(b.date) - new Date(a.date)) + .slice(0, limit); +} + +// 搜索城市 +function searchCities(query) { + query = query.toLowerCase(); + return citiesData.filter(city => + city.name.toLowerCase().includes(query) || + city.province.toLowerCase().includes(query) + ); +} + +// 显示成功消息 +function showSuccessMessage(message) { + // 移除已存在的消息 + const existingMessage = document.querySelector('.success-message'); + if (existingMessage) { + existingMessage.remove(); + } + + // 创建新消息 + const messageEl = document.createElement('div'); + messageEl.className = 'success-message'; + messageEl.textContent = message; + document.body.appendChild(messageEl); + + // 显示动画 + setTimeout(() => { + messageEl.classList.add('show'); + }, 100); + + // 3秒后隐藏 + setTimeout(() => { + messageEl.classList.remove('show'); + setTimeout(() => { + if (messageEl.parentNode) { + messageEl.remove(); + } + }, 300); + }, 3000); +} + +// 格式化日期显示 +function formatDate(dateString) { + const date = new Date(dateString); + return date.toLocaleDateString('zh-CN', { + year: 'numeric', + month: 'long', + day: 'numeric' + }); +} + +// 获取随机鼓励语句 +function getEncouragementMessage(visitedCount) { + const messages = [ + '继续探索祖国的大好河山!', + '您的足迹遍布神州大地!', + '每一次旅行都是一段美好的回忆!', + '世界那么大,继续去看看!', + '旅行让生活更精彩!' + ]; + + if (visitedCount === 0) { + return '开始您的第一次旅行记录吧!'; + } else if (visitedCount < 10) { + return '很好的开始,继续加油!'; + } else if (visitedCount < 50) { + return messages[Math.floor(Math.random() * messages.length)]; + } else if (visitedCount < 100) { + return '您已经是资深旅行者了!'; + } else { + return '太厉害了!您几乎走遍了中国!'; + } +} \ No newline at end of file diff --git a/china-cities.json b/china-cities.json new file mode 100644 index 0000000..c61e57c --- /dev/null +++ b/china-cities.json @@ -0,0 +1,384 @@ +{ + "provinces": [ + { "name": "北京市", "code": "110000", "type": "municipality" }, + { "name": "天津市", "code": "120000", "type": "municipality" }, + { "name": "河北省", "code": "130000", "type": "province" }, + { "name": "山西省", "code": "140000", "type": "province" }, + { "name": "内蒙古自治区", "code": "150000", "type": "autonomous_region" }, + { "name": "辽宁省", "code": "210000", "type": "province" }, + { "name": "吉林省", "code": "220000", "type": "province" }, + { "name": "黑龙江省", "code": "230000", "type": "province" }, + { "name": "上海市", "code": "310000", "type": "municipality" }, + { "name": "江苏省", "code": "320000", "type": "province" }, + { "name": "浙江省", "code": "330000", "type": "province" }, + { "name": "安徽省", "code": "340000", "type": "province" }, + { "name": "福建省", "code": "350000", "type": "province" }, + { "name": "江西省", "code": "360000", "type": "province" }, + { "name": "山东省", "code": "370000", "type": "province" }, + { "name": "河南省", "code": "410000", "type": "province" }, + { "name": "湖北省", "code": "420000", "type": "province" }, + { "name": "湖南省", "code": "430000", "type": "province" }, + { "name": "广东省", "code": "440000", "type": "province" }, + { "name": "广西壮族自治区", "code": "450000", "type": "autonomous_region" }, + { "name": "海南省", "code": "460000", "type": "province" }, + { "name": "重庆市", "code": "500000", "type": "municipality" }, + { "name": "四川省", "code": "510000", "type": "province" }, + { "name": "贵州省", "code": "520000", "type": "province" }, + { "name": "云南省", "code": "530000", "type": "province" }, + { "name": "西藏自治区", "code": "540000", "type": "autonomous_region" }, + { "name": "陕西省", "code": "610000", "type": "province" }, + { "name": "甘肃省", "code": "620000", "type": "province" }, + { "name": "青海省", "code": "630000", "type": "province" }, + { "name": "宁夏回族自治区", "code": "640000", "type": "autonomous_region" }, + { "name": "新疆维吾尔自治区", "code": "650000", "type": "autonomous_region" }, + { "name": "台湾省", "code": "710000", "type": "province" }, + { "name": "香港特别行政区", "code": "810000", "type": "sar" }, + { "name": "澳门特别行政区", "code": "820000", "type": "sar" } + ], + "cities": [ + { "name": "北京市", "province": "北京市", "longitude": 116.4074, "latitude": 39.9042, "level": "capital" }, + { "name": "天津市", "province": "天津市", "longitude": 117.1901, "latitude": 39.1209, "level": "municipality" }, + { "name": "石家庄市", "province": "河北省", "longitude": 114.5149, "latitude": 38.0428, "level": "capital" }, + { "name": "唐山市", "province": "河北省", "longitude": 118.1944, "latitude": 39.6304, "level": "city" }, + { "name": "秦皇岛市", "province": "河北省", "longitude": 119.6007, "latitude": 39.9354, "level": "city" }, + { "name": "邯郸市", "province": "河北省", "longitude": 114.4903, "latitude": 36.6256, "level": "city" }, + { "name": "邢台市", "province": "河北省", "longitude": 114.5086, "latitude": 37.0682, "level": "city" }, + { "name": "保定市", "province": "河北省", "longitude": 115.4648, "latitude": 38.8971, "level": "city" }, + { "name": "张家口市", "province": "河北省", "longitude": 114.8794, "latitude": 40.8118, "level": "city" }, + { "name": "承德市", "province": "河北省", "longitude": 117.9634, "latitude": 40.9517, "level": "city" }, + { "name": "沧州市", "province": "河北省", "longitude": 116.8387, "latitude": 38.2976, "level": "city" }, + { "name": "廊坊市", "province": "河北省", "longitude": 116.7139, "latitude": 39.5239, "level": "city" }, + { "name": "衡水市", "province": "河北省", "longitude": 115.6659, "latitude": 37.7161, "level": "city" }, + + { "name": "太原市", "province": "山西省", "longitude": 112.5489, "latitude": 37.8706, "level": "capital" }, + { "name": "大同市", "province": "山西省", "longitude": 113.3007, "latitude": 40.0932, "level": "city" }, + { "name": "阳泉市", "province": "山西省", "longitude": 113.5806, "latitude": 37.8568, "level": "city" }, + { "name": "长治市", "province": "山西省", "longitude": 113.1143, "latitude": 36.1915, "level": "city" }, + { "name": "晋城市", "province": "山西省", "longitude": 112.8512, "latitude": 35.4975, "level": "city" }, + { "name": "朔州市", "province": "山西省", "longitude": 112.4333, "latitude": 39.3313, "level": "city" }, + { "name": "晋中市", "province": "山西省", "longitude": 112.7536, "latitude": 37.6872, "level": "city" }, + { "name": "运城市", "province": "山西省", "longitude": 111.0065, "latitude": 35.0228, "level": "city" }, + { "name": "忻州市", "province": "山西省", "longitude": 112.7341, "latitude": 38.4167, "level": "city" }, + { "name": "临汾市", "province": "山西省", "longitude": 111.5179, "latitude": 36.0881, "level": "city" }, + { "name": "吕梁市", "province": "山西省", "longitude": 111.1440, "latitude": 37.5177, "level": "city" }, + + { "name": "呼和浩特市", "province": "内蒙古自治区", "longitude": 111.7507, "latitude": 40.8414, "level": "capital" }, + { "name": "包头市", "province": "内蒙古自治区", "longitude": 109.8403, "latitude": 40.6581, "level": "city" }, + { "name": "乌海市", "province": "内蒙古自治区", "longitude": 106.8254, "latitude": 39.6738, "level": "city" }, + { "name": "赤峰市", "province": "内蒙古自治区", "longitude": 118.8869, "latitude": 42.2761, "level": "city" }, + { "name": "通辽市", "province": "内蒙古自治区", "longitude": 122.2650, "latitude": 43.6174, "level": "city" }, + { "name": "鄂尔多斯市", "province": "内蒙古自治区", "longitude": 109.9896, "latitude": 39.6173, "level": "city" }, + { "name": "呼伦贝尔市", "province": "内蒙古自治区", "longitude": 119.7658, "latitude": 49.2153, "level": "city" }, + { "name": "巴彦淖尔市", "province": "内蒙古自治区", "longitude": 107.4160, "latitude": 40.7574, "level": "city" }, + { "name": "乌兰察布市", "province": "内蒙古自治区", "longitude": 113.1322, "latitude": 41.0341, "level": "city" }, + + { "name": "沈阳市", "province": "辽宁省", "longitude": 123.4315, "latitude": 41.8057, "level": "capital" }, + { "name": "大连市", "province": "辽宁省", "longitude": 121.6147, "latitude": 38.9140, "level": "city" }, + { "name": "鞍山市", "province": "辽宁省", "longitude": 122.9951, "latitude": 41.1106, "level": "city" }, + { "name": "抚顺市", "province": "辽宁省", "longitude": 123.9571, "latitude": 41.8654, "level": "city" }, + { "name": "本溪市", "province": "辽宁省", "longitude": 123.7708, "latitude": 41.2986, "level": "city" }, + { "name": "丹东市", "province": "辽宁省", "longitude": 124.3958, "latitude": 40.1290, "level": "city" }, + { "name": "锦州市", "province": "辽宁省", "longitude": 121.1353, "latitude": 41.1190, "level": "city" }, + { "name": "营口市", "province": "辽宁省", "longitude": 122.235, "latitude": 40.6678, "level": "city" }, + { "name": "阜新市", "province": "辽宁省", "longitude": 121.6489, "latitude": 42.0111, "level": "city" }, + { "name": "辽阳市", "province": "辽宁省", "longitude": 123.2368, "latitude": 41.2733, "level": "city" }, + { "name": "盘锦市", "province": "辽宁省", "longitude": 122.0709, "latitude": 41.1245, "level": "city" }, + { "name": "铁岭市", "province": "辽宁省", "longitude": 123.8442, "latitude": 42.2908, "level": "city" }, + { "name": "朝阳市", "province": "辽宁省", "longitude": 120.4513, "latitude": 41.5767, "level": "city" }, + { "name": "葫芦岛市", "province": "辽宁省", "longitude": 120.8560, "latitude": 40.7113, "level": "city" }, + + { "name": "长春市", "province": "吉林省", "longitude": 125.3245, "latitude": 43.8171, "level": "capital" }, + { "name": "吉林市", "province": "吉林省", "longitude": 126.5530, "latitude": 43.8436, "level": "city" }, + { "name": "四平市", "province": "吉林省", "longitude": 124.3708, "latitude": 43.1703, "level": "city" }, + { "name": "辽源市", "province": "吉林省", "longitude": 125.1357, "latitude": 42.9027, "level": "city" }, + { "name": "通化市", "province": "吉林省", "longitude": 125.9365, "latitude": 41.7212, "level": "city" }, + { "name": "白山市", "province": "吉林省", "longitude": 126.4277, "latitude": 41.9426, "level": "city" }, + { "name": "松原市", "province": "吉林省", "longitude": 124.8254, "latitude": 45.1411, "level": "city" }, + { "name": "白城市", "province": "吉林省", "longitude": 122.8397, "latitude": 45.6196, "level": "city" }, + + { "name": "哈尔滨市", "province": "黑龙江省", "longitude": 126.6342, "latitude": 45.7566, "level": "capital" }, + { "name": "齐齐哈尔市", "province": "黑龙江省", "longitude": 123.9576, "latitude": 47.3421, "level": "city" }, + { "name": "鸡西市", "province": "黑龙江省", "longitude": 130.9697, "latitude": 45.3005, "level": "city" }, + { "name": "鹤岗市", "province": "黑龙江省", "longitude": 130.2774, "latitude": 47.3500, "level": "city" }, + { "name": "双鸭山市", "province": "黑龙江省", "longitude": 131.1574, "latitude": 46.6434, "level": "city" }, + { "name": "大庆市", "province": "黑龙江省", "longitude": 125.1032, "latitude": 46.5904, "level": "city" }, + { "name": "伊春市", "province": "黑龙江省", "longitude": 128.8994, "latitude": 47.7278, "level": "city" }, + { "name": "佳木斯市", "province": "黑龙江省", "longitude": 130.3619, "latitude": 46.8109, "level": "city" }, + { "name": "七台河市", "province": "黑龙江省", "longitude": 131.0159, "latitude": 45.7713, "level": "city" }, + { "name": "牡丹江市", "province": "黑龙江省", "longitude": 129.6186, "latitude": 44.5830, "level": "city" }, + { "name": "黑河市", "province": "黑龙江省", "longitude": 127.4990, "latitude": 50.2496, "level": "city" }, + { "name": "绥化市", "province": "黑龙江省", "longitude": 126.9934, "latitude": 46.6374, "level": "city" }, + + { "name": "上海市", "province": "上海市", "longitude": 121.4737, "latitude": 31.2304, "level": "municipality" }, + + { "name": "南京市", "province": "江苏省", "longitude": 118.7969, "latitude": 32.0603, "level": "capital" }, + { "name": "无锡市", "province": "江苏省", "longitude": 120.3019, "latitude": 31.5747, "level": "city" }, + { "name": "徐州市", "province": "江苏省", "longitude": 117.1847, "latitude": 34.2618, "level": "city" }, + { "name": "常州市", "province": "江苏省", "longitude": 119.9463, "latitude": 31.7728, "level": "city" }, + { "name": "苏州市", "province": "江苏省", "longitude": 120.6194, "latitude": 31.2994, "level": "city" }, + { "name": "南通市", "province": "江苏省", "longitude": 120.8644, "latitude": 32.0162, "level": "city" }, + { "name": "连云港市", "province": "江苏省", "longitude": 119.1788, "latitude": 34.5996, "level": "city" }, + { "name": "淮安市", "province": "江苏省", "longitude": 119.0153, "latitude": 33.5975, "level": "city" }, + { "name": "盐城市", "province": "江苏省", "longitude": 120.1398, "latitude": 33.3776, "level": "city" }, + { "name": "扬州市", "province": "江苏省", "longitude": 119.4218, "latitude": 32.3932, "level": "city" }, + { "name": "镇江市", "province": "江苏省", "longitude": 119.4520, "latitude": 32.2044, "level": "city" }, + { "name": "泰州市", "province": "江苏省", "longitude": 119.9153, "latitude": 32.4849, "level": "city" }, + { "name": "宿迁市", "province": "江苏省", "longitude": 118.2757, "latitude": 33.9630, "level": "city" }, + + { "name": "杭州市", "province": "浙江省", "longitude": 120.1551, "latitude": 30.2741, "level": "capital" }, + { "name": "宁波市", "province": "浙江省", "longitude": 121.5440, "latitude": 29.8683, "level": "city" }, + { "name": "温州市", "province": "浙江省", "longitude": 120.6994, "latitude": 28.0015, "level": "city" }, + { "name": "嘉兴市", "province": "浙江省", "longitude": 120.7506, "latitude": 30.7625, "level": "city" }, + { "name": "湖州市", "province": "浙江省", "longitude": 120.0865, "latitude": 30.8936, "level": "city" }, + { "name": "绍兴市", "province": "浙江省", "longitude": 120.5820, "latitude": 29.9971, "level": "city" }, + { "name": "金华市", "province": "浙江省", "longitude": 119.6498, "latitude": 29.0798, "level": "city" }, + { "name": "衢州市", "province": "浙江省", "longitude": 118.8728, "latitude": 28.9409, "level": "city" }, + { "name": "舟山市", "province": "浙江省", "longitude": 122.1070, "latitude": 30.0160, "level": "city" }, + { "name": "台州市", "province": "浙江省", "longitude": 121.4204, "latitude": 28.6568, "level": "city" }, + { "name": "丽水市", "province": "浙江省", "longitude": 119.9214, "latitude": 28.4517, "level": "city" }, + + { "name": "合肥市", "province": "安徽省", "longitude": 117.2272, "latitude": 31.8206, "level": "capital" }, + { "name": "芜湖市", "province": "安徽省", "longitude": 118.3762, "latitude": 31.3262, "level": "city" }, + { "name": "蚌埠市", "province": "安徽省", "longitude": 117.3889, "latitude": 32.9168, "level": "city" }, + { "name": "淮南市", "province": "安徽省", "longitude": 117.0187, "latitude": 32.6476, "level": "city" }, + { "name": "马鞍山市", "province": "安徽省", "longitude": 118.5077, "latitude": 31.6895, "level": "city" }, + { "name": "淮北市", "province": "安徽省", "longitude": 116.7944, "latitude": 33.9717, "level": "city" }, + { "name": "铜陵市", "province": "安徽省", "longitude": 117.8165, "latitude": 30.9290, "level": "city" }, + { "name": "安庆市", "province": "安徽省", "longitude": 117.0538, "latitude": 30.5255, "level": "city" }, + { "name": "黄山市", "province": "安徽省", "longitude": 118.3175, "latitude": 29.7091, "level": "city" }, + { "name": "滁州市", "province": "安徽省", "longitude": 118.3162, "latitude": 32.3173, "level": "city" }, + { "name": "阜阳市", "province": "安徽省", "longitude": 115.8140, "latitude": 32.8969, "level": "city" }, + { "name": "宿州市", "province": "安徽省", "longitude": 116.9640, "latitude": 33.6341, "level": "city" }, + { "name": "六安市", "province": "安徽省", "longitude": 116.5078, "latitude": 31.7529, "level": "city" }, + { "name": "亳州市", "province": "安徽省", "longitude": 115.7823, "latitude": 33.8445, "level": "city" }, + { "name": "池州市", "province": "安徽省", "longitude": 117.4890, "latitude": 30.6566, "level": "city" }, + { "name": "宣城市", "province": "安徽省", "longitude": 118.7576, "latitude": 30.9456, "level": "city" }, + + { "name": "福州市", "province": "福建省", "longitude": 119.3063, "latitude": 26.0753, "level": "capital" }, + { "name": "厦门市", "province": "福建省", "longitude": 118.1109, "latitude": 24.4900, "level": "city" }, + { "name": "莆田市", "province": "福建省", "longitude": 119.0077, "latitude": 25.4313, "level": "city" }, + { "name": "三明市", "province": "福建省", "longitude": 117.6356, "latitude": 26.2654, "level": "city" }, + { "name": "泉州市", "province": "福建省", "longitude": 118.5748, "latitude": 24.8741, "level": "city" }, + { "name": "漳州市", "province": "福建省", "longitude": 117.6758, "latitude": 24.5106, "level": "city" }, + { "name": "南平市", "province": "福建省", "longitude": 118.1783, "latitude": 26.6354, "level": "city" }, + { "name": "龙岩市", "province": "福建省", "longitude": 117.0296, "latitude": 25.0917, "level": "city" }, + { "name": "宁德市", "province": "福建省", "longitude": 119.5270, "latitude": 26.6590, "level": "city" }, + + { "name": "南昌市", "province": "江西省", "longitude": 115.8922, "latitude": 28.6765, "level": "capital" }, + { "name": "景德镇市", "province": "江西省", "longitude": 117.2146, "latitude": 29.2927, "level": "city" }, + { "name": "萍乡市", "province": "江西省", "longitude": 113.8522, "latitude": 27.6228, "level": "city" }, + { "name": "九江市", "province": "江西省", "longitude": 115.9928, "latitude": 29.7050, "level": "city" }, + { "name": "新余市", "province": "江西省", "longitude": 114.9302, "latitude": 27.8175, "level": "city" }, + { "name": "鹰潭市", "province": "江西省", "longitude": 117.0338, "latitude": 28.2386, "level": "city" }, + { "name": "赣州市", "province": "江西省", "longitude": 114.9402, "latitude": 25.8311, "level": "city" }, + { "name": "吉安市", "province": "江西省", "longitude": 114.9865, "latitude": 27.1117, "level": "city" }, + { "name": "宜春市", "province": "江西省", "longitude": 114.3916, "latitude": 27.8043, "level": "city" }, + { "name": "抚州市", "province": "江西省", "longitude": 116.3581, "latitude": 27.9838, "level": "city" }, + { "name": "上饶市", "province": "江西省", "longitude": 117.9716, "latitude": 28.4444, "level": "city" }, + + { "name": "济南市", "province": "山东省", "longitude": 117.0009, "latitude": 36.6758, "level": "capital" }, + { "name": "青岛市", "province": "山东省", "longitude": 120.3826, "latitude": 36.0671, "level": "city" }, + { "name": "淄博市", "province": "山东省", "longitude": 118.0632, "latitude": 36.8133, "level": "city" }, + { "name": "枣庄市", "province": "山东省", "longitude": 117.5570, "latitude": 34.8564, "level": "city" }, + { "name": "东营市", "province": "山东省", "longitude": 118.6747, "latitude": 37.4344, "level": "city" }, + { "name": "烟台市", "province": "山东省", "longitude": 121.3914, "latitude": 37.5393, "level": "city" }, + { "name": "潍坊市", "province": "山东省", "longitude": 119.1078, "latitude": 36.7063, "level": "city" }, + { "name": "济宁市", "province": "山东省", "longitude": 116.5873, "latitude": 35.4154, "level": "city" }, + { "name": "泰安市", "province": "山东省", "longitude": 117.1293, "latitude": 36.1947, "level": "city" }, + { "name": "威海市", "province": "山东省", "longitude": 122.1204, "latitude": 37.5130, "level": "city" }, + { "name": "日照市", "province": "山东省", "longitude": 119.4610, "latitude": 35.4164, "level": "city" }, + { "name": "临沂市", "province": "山东省", "longitude": 118.3564, "latitude": 35.1040, "level": "city" }, + { "name": "德州市", "province": "山东省", "longitude": 116.3073, "latitude": 37.4535, "level": "city" }, + { "name": "聊城市", "province": "山东省", "longitude": 115.9806, "latitude": 36.4563, "level": "city" }, + { "name": "滨州市", "province": "山东省", "longitude": 118.0167, "latitude": 37.3835, "level": "city" }, + { "name": "菏泽市", "province": "山东省", "longitude": 115.4693, "latitude": 35.2464, "level": "city" }, + + { "name": "郑州市", "province": "河南省", "longitude": 113.6254, "latitude": 34.7466, "level": "capital" }, + { "name": "开封市", "province": "河南省", "longitude": 114.3413, "latitude": 34.7972, "level": "city" }, + { "name": "洛阳市", "province": "河南省", "longitude": 112.4540, "latitude": 34.6197, "level": "city" }, + { "name": "平顶山市", "province": "河南省", "longitude": 113.3073, "latitude": 33.7353, "level": "city" }, + { "name": "安阳市", "province": "河南省", "longitude": 114.3928, "latitude": 36.1032, "level": "city" }, + { "name": "鹤壁市", "province": "河南省", "longitude": 114.2951, "latitude": 35.8973, "level": "city" }, + { "name": "新乡市", "province": "河南省", "longitude": 113.9267, "latitude": 35.3029, "level": "city" }, + { "name": "焦作市", "province": "河南省", "longitude": 113.2380, "latitude": 35.2390, "level": "city" }, + { "name": "濮阳市", "province": "河南省", "longitude": 115.0410, "latitude": 35.7627, "level": "city" }, + { "name": "许昌市", "province": "河南省", "longitude": 113.8260, "latitude": 34.0229, "level": "city" }, + { "name": "漯河市", "province": "河南省", "longitude": 114.0261, "latitude": 33.5756, "level": "city" }, + { "name": "三门峡市", "province": "河南省", "longitude": 111.1941, "latitude": 34.7772, "level": "city" }, + { "name": "南阳市", "province": "河南省", "longitude": 112.5407, "latitude": 32.9990, "level": "city" }, + { "name": "商丘市", "province": "河南省", "longitude": 115.6506, "latitude": 34.4142, "level": "city" }, + { "name": "信阳市", "province": "河南省", "longitude": 114.0752, "latitude": 32.1233, "level": "city" }, + { "name": "周口市", "province": "河南省", "longitude": 114.6497, "latitude": 33.6201, "level": "city" }, + { "name": "驻马店市", "province": "河南省", "longitude": 114.0225, "latitude": 32.9803, "level": "city" }, + + { "name": "武汉市", "province": "湖北省", "longitude": 114.2985, "latitude": 30.5844, "level": "capital" }, + { "name": "黄石市", "province": "湖北省", "longitude": 115.0772, "latitude": 30.2200, "level": "city" }, + { "name": "十堰市", "province": "湖北省", "longitude": 110.7874, "latitude": 32.6469, "level": "city" }, + { "name": "宜昌市", "province": "湖北省", "longitude": 111.2906, "latitude": 30.7026, "level": "city" }, + { "name": "襄阳市", "province": "湖北省", "longitude": 112.1443, "latitude": 32.0420, "level": "city" }, + { "name": "鄂州市", "province": "湖北省", "longitude": 114.8907, "latitude": 30.3844, "level": "city" }, + { "name": "荆门市", "province": "湖北省", "longitude": 112.2040, "latitude": 31.0354, "level": "city" }, + { "name": "孝感市", "province": "湖北省", "longitude": 113.9267, "latitude": 30.9264, "level": "city" }, + { "name": "荆州市", "province": "湖北省", "longitude": 112.2384, "latitude": 30.3269, "level": "city" }, + { "name": "黄冈市", "province": "湖北省", "longitude": 114.8794, "latitude": 30.4475, "level": "city" }, + { "name": "咸宁市", "province": "湖北省", "longitude": 114.3289, "latitude": 29.8326, "level": "city" }, + { "name": "随州市", "province": "湖北省", "longitude": 113.3823, "latitude": 31.7177, "level": "city" }, + + { "name": "长沙市", "province": "湖南省", "longitude": 112.9825, "latitude": 28.1943, "level": "capital" }, + { "name": "株洲市", "province": "湖南省", "longitude": 113.1516, "latitude": 27.8274, "level": "city" }, + { "name": "湘潭市", "province": "湖南省", "longitude": 112.9446, "latitude": 27.8094, "level": "city" }, + { "name": "衡阳市", "province": "湖南省", "longitude": 112.6071, "latitude": 26.8934, "level": "city" }, + { "name": "邵阳市", "province": "湖南省", "longitude": 111.4690, "latitude": 27.2378, "level": "city" }, + { "name": "岳阳市", "province": "湖南省", "longitude": 113.1329, "latitude": 29.3702, "level": "city" }, + { "name": "常德市", "province": "湖南省", "longitude": 111.6991, "latitude": 29.0317, "level": "city" }, + { "name": "张家界市", "province": "湖南省", "longitude": 110.4790, "latitude": 29.1274, "level": "city" }, + { "name": "益阳市", "province": "湖南省", "longitude": 112.3550, "latitude": 28.5701, "level": "city" }, + { "name": "郴州市", "province": "湖南省", "longitude": 113.0322, "latitude": 25.7706, "level": "city" }, + { "name": "永州市", "province": "湖南省", "longitude": 111.6088, "latitude": 26.4204, "level": "city" }, + { "name": "怀化市", "province": "湖南省", "longitude": 109.9775, "latitude": 27.5501, "level": "city" }, + { "name": "娄底市", "province": "湖南省", "longitude": 112.0085, "latitude": 27.7282, "level": "city" }, + + { "name": "广州市", "province": "广东省", "longitude": 113.2644, "latitude": 23.1291, "level": "capital" }, + { "name": "韶关市", "province": "广东省", "longitude": 113.5917, "latitude": 24.8016, "level": "city" }, + { "name": "深圳市", "province": "广东省", "longitude": 114.0579, "latitude": 22.5431, "level": "city" }, + { "name": "珠海市", "province": "广东省", "longitude": 113.5767, "latitude": 22.2708, "level": "city" }, + { "name": "汕头市", "province": "广东省", "longitude": 116.7081, "latitude": 23.3541, "level": "city" }, + { "name": "佛山市", "province": "广东省", "longitude": 113.1220, "latitude": 23.0288, "level": "city" }, + { "name": "江门市", "province": "广东省", "longitude": 113.0946, "latitude": 22.5909, "level": "city" }, + { "name": "湛江市", "province": "广东省", "longitude": 110.3594, "latitude": 21.2707, "level": "city" }, + { "name": "茂名市", "province": "广东省", "longitude": 110.9255, "latitude": 21.6597, "level": "city" }, + { "name": "肇庆市", "province": "广东省", "longitude": 112.4721, "latitude": 23.0515, "level": "city" }, + { "name": "惠州市", "province": "广东省", "longitude": 114.4152, "latitude": 23.0794, "level": "city" }, + { "name": "梅州市", "province": "广东省", "longitude": 116.1179, "latitude": 24.2991, "level": "city" }, + { "name": "汕尾市", "province": "广东省", "longitude": 115.3648, "latitude": 22.7745, "level": "city" }, + { "name": "河源市", "province": "广东省", "longitude": 114.6974, "latitude": 23.7461, "level": "city" }, + { "name": "阳江市", "province": "广东省", "longitude": 111.9826, "latitude": 21.8591, "level": "city" }, + { "name": "清远市", "province": "广东省", "longitude": 113.0518, "latitude": 23.6817, "level": "city" }, + { "name": "东莞市", "province": "广东省", "longitude": 113.7461, "latitude": 23.0208, "level": "city" }, + { "name": "中山市", "province": "广东省", "longitude": 113.3823, "latitude": 22.5212, "level": "city" }, + { "name": "潮州市", "province": "广东省", "longitude": 116.6227, "latitude": 23.6565, "level": "city" }, + { "name": "揭阳市", "province": "广东省", "longitude": 116.3724, "latitude": 23.5439, "level": "city" }, + { "name": "云浮市", "province": "广东省", "longitude": 112.0446, "latitude": 22.9297, "level": "city" }, + + { "name": "南宁市", "province": "广西壮族自治区", "longitude": 108.3202, "latitude": 22.8241, "level": "capital" }, + { "name": "柳州市", "province": "广西壮族自治区", "longitude": 109.4281, "latitude": 24.3146, "level": "city" }, + { "name": "桂林市", "province": "广西壮族自治区", "longitude": 110.2993, "latitude": 25.2741, "level": "city" }, + { "name": "梧州市", "province": "广西壮族自治区", "longitude": 111.2797, "latitude": 23.4748, "level": "city" }, + { "name": "北海市", "province": "广西壮族自治区", "longitude": 109.1193, "latitude": 21.4733, "level": "city" }, + { "name": "防城港市", "province": "广西壮族自治区", "longitude": 108.3545, "latitude": 21.6146, "level": "city" }, + { "name": "钦州市", "province": "广西壮族自治区", "longitude": 108.6544, "latitude": 21.9570, "level": "city" }, + { "name": "贵港市", "province": "广西壮族自治区", "longitude": 109.6021, "latitude": 23.0936, "level": "city" }, + { "name": "玉林市", "province": "广西壮族自治区", "longitude": 110.1544, "latitude": 22.6314, "level": "city" }, + { "name": "百色市", "province": "广西壮族自治区", "longitude": 106.6182, "latitude": 23.8978, "level": "city" }, + { "name": "贺州市", "province": "广西壮族自治区", "longitude": 111.5521, "latitude": 24.4141, "level": "city" }, + { "name": "河池市", "province": "广西壮族自治区", "longitude": 108.0627, "latitude": 24.6956, "level": "city" }, + { "name": "来宾市", "province": "广西壮族自治区", "longitude": 109.2296, "latitude": 23.7334, "level": "city" }, + { "name": "崇左市", "province": "广西壮族自治区", "longitude": 107.3644, "latitude": 22.4041, "level": "city" }, + + { "name": "海口市", "province": "海南省", "longitude": 110.3493, "latitude": 20.0176, "level": "capital" }, + { "name": "三亚市", "province": "海南省", "longitude": 109.5119, "latitude": 18.2530, "level": "city" }, + { "name": "三沙市", "province": "海南省", "longitude": 112.3487, "latitude": 16.8310, "level": "city" }, + { "name": "儋州市", "province": "海南省", "longitude": 109.5767, "latitude": 19.5175, "level": "city" }, + + { "name": "重庆市", "province": "重庆市", "longitude": 106.5049, "latitude": 29.5332, "level": "municipality" }, + + { "name": "成都市", "province": "四川省", "longitude": 104.0648, "latitude": 30.5728, "level": "capital" }, + { "name": "自贡市", "province": "四川省", "longitude": 104.7794, "latitude": 29.3522, "level": "city" }, + { "name": "攀枝花市", "province": "四川省", "longitude": 101.7183, "latitude": 26.5806, "level": "city" }, + { "name": "泸州市", "province": "四川省", "longitude": 105.4426, "latitude": 28.8719, "level": "city" }, + { "name": "德阳市", "province": "四川省", "longitude": 104.3982, "latitude": 31.1270, "level": "city" }, + { "name": "绵阳市", "province": "四川省", "longitude": 104.6790, "latitude": 31.4648, "level": "city" }, + { "name": "广元市", "province": "四川省", "longitude": 105.8449, "latitude": 32.4335, "level": "city" }, + { "name": "遂宁市", "province": "四川省", "longitude": 105.5715, "latitude": 30.5133, "level": "city" }, + { "name": "内江市", "province": "四川省", "longitude": 105.0661, "latitude": 29.5804, "level": "city" }, + { "name": "乐山市", "province": "四川省", "longitude": 103.7614, "latitude": 29.5527, "level": "city" }, + { "name": "南充市", "province": "四川省", "longitude": 106.0830, "latitude": 30.7952, "level": "city" }, + { "name": "眉山市", "province": "四川省", "longitude": 103.8313, "latitude": 30.0481, "level": "city" }, + { "name": "宜宾市", "province": "四川省", "longitude": 104.6426, "latitude": 28.7609, "level": "city" }, + { "name": "广安市", "province": "四川省", "longitude": 106.6333, "latitude": 30.4564, "level": "city" }, + { "name": "达州市", "province": "四川省", "longitude": 107.5023, "latitude": 31.2090, "level": "city" }, + { "name": "雅安市", "province": "四川省", "longitude": 103.0014, "latitude": 29.9877, "level": "city" }, + { "name": "巴中市", "province": "四川省", "longitude": 106.7537, "latitude": 31.8586, "level": "city" }, + { "name": "资阳市", "province": "四川省", "longitude": 104.6419, "latitude": 30.1222, "level": "city" }, + + { "name": "贵阳市", "province": "贵州省", "longitude": 106.7135, "latitude": 26.5783, "level": "capital" }, + { "name": "六盘水市", "province": "贵州省", "longitude": 104.8467, "latitude": 26.5918, "level": "city" }, + { "name": "遵义市", "province": "贵州省", "longitude": 106.9374, "latitude": 27.7063, "level": "city" }, + { "name": "安顺市", "province": "贵州省", "longitude": 105.9478, "latitude": 26.2455, "level": "city" }, + { "name": "毕节市", "province": "贵州省", "longitude": 105.2851, "latitude": 27.3017, "level": "city" }, + { "name": "铜仁市", "province": "贵州省", "longitude": 109.1911, "latitude": 27.7183, "level": "city" }, + + { "name": "昆明市", "province": "云南省", "longitude": 102.7123, "latitude": 25.0406, "level": "capital" }, + { "name": "曲靖市", "province": "云南省", "longitude": 103.7976, "latitude": 25.5016, "level": "city" }, + { "name": "玉溪市", "province": "云南省", "longitude": 102.5433, "latitude": 24.3505, "level": "city" }, + { "name": "保山市", "province": "云南省", "longitude": 99.1670, "latitude": 25.1118, "level": "city" }, + { "name": "昭通市", "province": "云南省", "longitude": 103.7177, "latitude": 27.3397, "level": "city" }, + { "name": "丽江市", "province": "云南省", "longitude": 100.2270, "latitude": 26.8721, "level": "city" }, + { "name": "普洱市", "province": "云南省", "longitude": 100.9727, "latitude": 22.7770, "level": "city" }, + { "name": "临沧市", "province": "云南省", "longitude": 100.0865, "latitude": 23.8878, "level": "city" }, + + { "name": "拉萨市", "province": "西藏自治区", "longitude": 91.1320, "latitude": 29.6600, "level": "capital" }, + { "name": "日喀则市", "province": "西藏自治区", "longitude": 88.8851, "latitude": 29.2675, "level": "city" }, + { "name": "昌都市", "province": "西藏自治区", "longitude": 97.1785, "latitude": 31.1369, "level": "city" }, + { "name": "林芝市", "province": "西藏自治区", "longitude": 94.3624, "latitude": 29.6544, "level": "city" }, + { "name": "山南市", "province": "西藏自治区", "longitude": 91.7665, "latitude": 29.2362, "level": "city" }, + { "name": "那曲市", "province": "西藏自治区", "longitude": 92.0602, "latitude": 31.4759, "level": "city" }, + { "name": "阿里地区", "province": "西藏自治区", "longitude": 80.1055, "latitude": 32.5032, "level": "city" }, + + { "name": "西安市", "province": "陕西省", "longitude": 108.9398, "latitude": 34.3416, "level": "capital" }, + { "name": "铜川市", "province": "陕西省", "longitude": 108.9794, "latitude": 34.8965, "level": "city" }, + { "name": "宝鸡市", "province": "陕西省", "longitude": 107.1454, "latitude": 34.3640, "level": "city" }, + { "name": "咸阳市", "province": "陕西省", "longitude": 108.7093, "latitude": 34.3336, "level": "city" }, + { "name": "渭南市", "province": "陕西省", "longitude": 109.5020, "latitude": 34.4994, "level": "city" }, + { "name": "延安市", "province": "陕西省", "longitude": 109.4897, "latitude": 36.5965, "level": "city" }, + { "name": "汉中市", "province": "陕西省", "longitude": 107.0282, "latitude": 33.0777, "level": "city" }, + { "name": "榆林市", "province": "陕西省", "longitude": 109.7410, "latitude": 38.2900, "level": "city" }, + { "name": "安康市", "province": "陕西省", "longitude": 109.0294, "latitude": 32.6803, "level": "city" }, + { "name": "商洛市", "province": "陕西省", "longitude": 109.9398, "latitude": 33.8688, "level": "city" }, + + { "name": "兰州市", "province": "甘肃省", "longitude": 103.8236, "latitude": 36.0581, "level": "capital" }, + { "name": "嘉峪关市", "province": "甘肃省", "longitude": 98.2773, "latitude": 39.7865, "level": "city" }, + { "name": "金昌市", "province": "甘肃省", "longitude": 102.1980, "latitude": 38.5214, "level": "city" }, + { "name": "白银市", "province": "甘肃省", "longitude": 104.1390, "latitude": 36.5451, "level": "city" }, + { "name": "天水市", "province": "甘肃省", "longitude": 105.7249, "latitude": 34.5785, "level": "city" }, + { "name": "武威市", "province": "甘肃省", "longitude": 102.6382, "latitude": 37.9289, "level": "city" }, + { "name": "张掖市", "province": "甘肃省", "longitude": 100.4505, "latitude": 38.9248, "level": "city" }, + { "name": "平凉市", "province": "甘肃省", "longitude": 106.6656, "latitude": 35.5428, "level": "city" }, + { "name": "酒泉市", "province": "甘肃省", "longitude": 98.5108, "latitude": 39.7325, "level": "city" }, + { "name": "庆阳市", "province": "甘肃省", "longitude": 107.6434, "latitude": 35.7342, "level": "city" }, + { "name": "定西市", "province": "甘肃省", "longitude": 104.6261, "latitude": 35.5796, "level": "city" }, + { "name": "陇南市", "province": "甘肃省", "longitude": 104.9214, "latitude": 33.4006, "level": "city" }, + + { "name": "西宁市", "province": "青海省", "longitude": 101.7781, "latitude": 36.6171, "level": "capital" }, + { "name": "海东市", "province": "青海省", "longitude": 102.1030, "latitude": 36.5029, "level": "city" }, + + { "name": "银川市", "province": "宁夏回族自治区", "longitude": 106.2309, "latitude": 38.4872, "level": "capital" }, + { "name": "石嘴山市", "province": "宁夏回族自治区", "longitude": 106.3831, "latitude": 39.0133, "level": "city" }, + { "name": "吴忠市", "province": "宁夏回族自治区", "longitude": 106.1991, "latitude": 37.9972, "level": "city" }, + { "name": "固原市", "province": "宁夏回族自治区", "longitude": 106.2851, "latitude": 36.0046, "level": "city" }, + { "name": "中卫市", "province": "宁夏回族自治区", "longitude": 105.1896, "latitude": 37.5149, "level": "city" }, + + { "name": "乌鲁木齐市", "province": "新疆维吾尔自治区", "longitude": 87.6177, "latitude": 43.7928, "level": "capital" }, + { "name": "克拉玛依市", "province": "新疆维吾尔自治区", "longitude": 84.8739, "latitude": 45.5956, "level": "city" }, + { "name": "吐鲁番市", "province": "新疆维吾尔自治区", "longitude": 89.1841, "latitude": 42.9477, "level": "city" }, + { "name": "哈密市", "province": "新疆维吾尔自治区", "longitude": 93.5132, "latitude": 42.8330, "level": "city" }, + { "name": "昌吉市", "province": "新疆维吾尔自治区", "longitude": 87.3040, "latitude": 44.0078, "level": "city" }, + { "name": "博尔塔拉蒙古自治州", "province": "新疆维吾尔自治区", "longitude": 82.0748, "latitude": 44.9038, "level": "city" }, + { "name": "巴音郭楞蒙古自治州", "province": "新疆维吾尔自治区", "longitude": 86.1746, "latitude": 41.7681, "level": "city" }, + { "name": "阿克苏地区", "province": "新疆维吾尔自治区", "longitude": 80.2651, "latitude": 41.1717, "level": "city" }, + { "name": "克孜勒苏柯尔克孜自治州", "province": "新疆维吾尔自治区", "longitude": 76.1725, "latitude": 39.7133, "level": "city" }, + { "name": "喀什地区", "province": "新疆维吾尔自治区", "longitude": 75.9897, "latitude": 39.4677, "level": "city" }, + { "name": "和田地区", "province": "新疆维吾尔自治区", "longitude": 79.9253, "latitude": 37.1106, "level": "city" }, + { "name": "伊犁哈萨克自治州", "province": "新疆维吾尔自治区", "longitude": 81.3179, "latitude": 43.9219, "level": "city" }, + { "name": "塔城地区", "province": "新疆维吾尔自治区", "longitude": 82.9857, "latitude": 46.7464, "level": "city" }, + { "name": "阿勒泰地区", "province": "新疆维吾尔自治区", "longitude": 88.1396, "latitude": 47.8481, "level": "city" }, + + { "name": "台北市", "province": "台湾省", "longitude": 121.5654, "latitude": 25.0330, "level": "capital" }, + { "name": "高雄市", "province": "台湾省", "longitude": 120.3014, "latitude": 22.6273, "level": "city" }, + { "name": "台中市", "province": "台湾省", "longitude": 120.6736, "latitude": 24.1477, "level": "city" }, + { "name": "台南市", "province": "台湾省", "longitude": 120.2513, "latitude": 23.0021, "level": "city" }, + + { "name": "香港", "province": "香港特别行政区", "longitude": 114.1694, "latitude": 22.3193, "level": "sar" }, + { "name": "澳门", "province": "澳门特别行政区", "longitude": 113.5491, "latitude": 22.1987, "level": "sar" } + ] +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..e2f758f --- /dev/null +++ b/index.html @@ -0,0 +1,450 @@ + + + + + + 我的中国旅行地图 + + + + +
+

我的中国旅行地图

+

记录您走过的每一座城市,留下美好的旅行回忆

+
+ +
+ + +
+ +
+
+ +
+ + + + + + + \ No newline at end of file