main.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // geo 'https://raw.githubusercontent.com/88250/city-geo/master/data.json'
  2. // provinces 'https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/provinces.json'
  3. // cities 'https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/cities.json'
  4. const fs = require('fs')
  5. const pinyin = require('js-pinyin')
  6. let geo = require('./assets/geo')
  7. let provinces = require('./assets/provinces')
  8. let cities = require('./assets/cities')
  9. // 省直辖县级行政区划
  10. let areas = ['4190', '4290', '4690', '6590']
  11. cities = cities.filter(city => !areas.includes(city.code))
  12. // 直辖市
  13. let aCity = ['1101', '1201', '3101', '5001']
  14. cities.forEach(city => {
  15. city.province = provinces.find(province => province.code === city.provinceCode).name
  16. if (aCity.includes(city.code)) {
  17. city.name = city.province
  18. }
  19. let g = geo.find(g => g.city === city.name || g.province === city.name)
  20. city.lat = g.lat
  21. city.lng = g.lng
  22. if (city.name.lastIndexOf('市') === city.name.length - 1) {
  23. city.name = city.name.slice(0, city.name.length - 1)
  24. }
  25. })
  26. // A-Z
  27. let json = []
  28. for (var i = 0; i < 26; i++) {
  29. json.push({
  30. initial: String.fromCharCode(65 + i),
  31. list: []
  32. })
  33. }
  34. json.forEach(j => {
  35. cities.forEach(city => {
  36. if (pinyin.getFullChars(city.name).slice(0, 1) === j.initial) {
  37. j.list.push(city)
  38. }
  39. })
  40. })
  41. // 过滤空数组
  42. json = json.filter(j => j.list.length)
  43. fs.writeFileSync('./cities.json', JSON.stringify(json))