yyc1217 / twzipcode-data

開發用中華郵政郵遞區號 / Taiwan zipcodes for developers.
MIT License
15 stars 12 forks source link

新竹市與嘉義市區碼問題? #58

Closed CoffieLeo closed 3 years ago

CoffieLeo commented 3 years ago

不曉得新竹市跟嘉義市的區碼問題有解嗎? 看起來是兩個城市內的區碼都相同,所以下拉選單在選擇時都出現同一個區域

yyc1217 commented 3 years ago

你好,這是我當初思慮不周,將重覆的值拿來當id導致。目前思考改成下列方式,並發佈至v.2.0.0,twzipcode-vue也會採用twzipcode@v2.0.0版本,預計周末前處理完。

// 新竹市
  { id: 3000, zipcode: 300, county: '新竹市', city: '東區' },
  { id: 3001, zipcode: 300, county: '新竹市', city: '北區' },
  { id: 3002, zipcode: 300, county: '新竹市', city: '香山區' },

// 嘉義市
  { id: 6000, zipcode: 600, county: '嘉義市', city: '西區' },
  { id: 6001, zipcode: 600, county: '嘉義市', city: '東區' },

// 其餘鄉鎮市區 id = zipcode + '0'
CoffieLeo commented 3 years ago

你好,這是我當初思慮不周,將重覆的值拿來當id導致。目前思考改成下列方式,並發佈至v.2.0.0,twzipcode-vue也會採用twzipcode@v2.0.0版本,預計周末前處理完。

// 新竹市
  { id: 3000, zipcode: 300, county: '新竹市', city: '東區' },
  { id: 3001, zipcode: 300, county: '新竹市', city: '北區' },
  { id: 3002, zipcode: 300, county: '新竹市', city: '香山區' },

// 嘉義市
  { id: 6000, zipcode: 600, county: '嘉義市', city: '西區' },
  { id: 6001, zipcode: 600, county: '嘉義市', city: '東區' },

// 其餘鄉鎮區 id == zipcode

不好意思,因為還是新手,不曉得該怎麼改 但又覺得這個下拉選單很讚,只是剛好發現問題所以來詢問看看 辛苦了,感謝!

ausir0726 commented 3 years ago

@yyc1217 我個人覺得使用 ID 來設計 data 好像不是很妥當 如此造成 [UI] 選擇區域=> [DB] 郵遞區號=(ZIPCODE)300 => [UI] 套回 300 ,這時候用 300 查仍不知道是哪一區
我個人認為 data 的部分應該是沒有問題,現實 ZIPCODE 300 代表三個區也能合理呈現 如果加上 ID,變成 DB 除了存 ZIPCODE 之外,為了能夠重新呈現 select 必須要另外存 ID (3001.. 之類 ) 目前我使用 zipcode 儲存方式會是 300,新竹市,東區 三個欄位,並且要呈現時 select value 會用 300-新竹市-東區 而不會單用 ZIPCODE 300 我個人認為應該是單純處理好 zipcode-vue 把選單可以正確 render 並且set value 的時候必須使用 300-新竹市-東區 (或其他,因為還要處理多語) 如真的必須使用 id 應該也是在 vue 那包另外做,因為以 zipcode-data 的概念看,資料上並沒有錯誤 而使用 id 區隔 3 個重複的 zipcode 應該是後續使用 select 應該做的,更有合理性

一點意見

yyc1217 commented 3 years ago

@ausir0726 你說的有道理,我再修改vue那邊,這邊不動。

ausir0726 commented 3 years ago

@yyc1217 不好意思 後來看一下現在用的 code 都是用 id 去取 zipcode 如果把ID 改成 四位數 會造成 break change ,就回去修每一個專案改 zipcode 但如果真的發生又不能不改 ,因為之後如果郵遞區號有變會造成無法更新 因此我要建議一下 如果另外要做一個索引 建議保留原本的 id => 100 (zipcode ) 要另外做出索引的部分 改 index => 1000 這樣子 當然 data 不改是最好啦

yyc1217 commented 3 years ago

@yyc1217 不好意思 後來看一下現在用的 code 都是用 id 去取 zipcode 如果把ID 改成 四位數 會造成 break change ,就回去修每一個專案改 zipcode 但如果真的發生又不能不改 ,因為之後如果郵遞區號有變會造成無法更新 因此我要建議一下 如果另外要做一個索引 建議保留原本的 id => 100 (zipcode ) 要另外做出索引的部分 改 index => 1000 這樣子 當然 data 不改是最好啦

按照臺灣地區郵遞區號前3碼一覽表 103/12(Excel版) 的內容,原本應該是要:

  ...
    { 'id': 300, 'county': '新竹市', 'city': '全區' },
  ...
    { 'id': 600, 'county': '嘉義市', 'city': '全區' },
  ...

但我當初的想法是讓使用者可以用下列的方式輸入地址

<select>
  <option>100台北市中正區</option>
  ...
</select>

<input>XXX路XXX號</input>

所以才把這兩個市給分開,但當初沒料想到會造成這麼大的問題,也是我過去一個月糾結許久未完成的原因

不過我還是想按照最初的想法,將原本的id移至zipcode,並將id改為「區碼+縣市中文+鄉鎮市區中文」,以便讓中英的資料指向同一個:

    { 'id': '300新竹市東區', 'zipcode': 300, 'county': '新竹市', 'city': '東區' },
    { 'id': '300新竹市北區', 'zipcode': 300, 'county': '新竹市', 'city': '北區' },
    { 'id': '300新竹市香山區', 'zipcode': 300, 'county': '新竹市', 'city': '香山區' },
  ...
    { 'id': '300新竹市東區', 'zipcode': 300, 'county': 'Hsinchu City', 'city': 'East District' },
    { 'id': '300新竹市北區', 'zipcode': 300, 'county': 'Hsinchu City', 'city': 'North District' },
    { 'id': '300新竹市香山區', 'zipcode': 300, 'county': 'Hsinchu City', 'city': 'Xiangshan District' },

這個改變我會放在v2.0.0,而且郵遞區號前三碼應該二、三十年都不會變,因此目前的v1.7.1應足以應付貴專案的需求,只能跟您說聲抱歉了。

然後這次就不給自己期限了🤣

ausir0726 commented 3 years ago

@yyc1217 還是有沒有種可能 索引的欄位用 index 郵遞區號更正為 zipcode 而原來的 id 作為 zipcode 的 alias ( 用程式做,非增加兩筆相同的內容 ) 因為這個部分會影響到 VUE 那個套件 因此我就不方便提供 PR 還甚麼的~ 只有出意見 抱歉抱歉

整份拿到的結果有點類似

 { 'index': '300新竹市香山區', 'id': 300, 'zipcode': 300, 'county': '新竹市', 'city': '香山區' }
yyc1217 commented 3 years ago

不會增加index欄位 twzipcode-vue那邊我會一併修正,也會放在v2.0.0版本

yyc1217 commented 3 years ago

Solved in 477a91b1f3884604b67872d043a0111228e15dd1