@sk-global/js-msearch-gsi-jp 0.0.2-0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +1 -1
- package/dist/index.module.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/muni.d.ts +19 -0
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Promise.resolve().catch(console.
|
|
1
|
+
function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/e(require("axios")),t="GSI.MUNI_ARRAY[",n=function(){try{return Promise.resolve(r.default.get("https://maps.gsi.go.jp/js/muni.js",{responseType:"text"})).then(function(e){return function(e){var r={};return e.split("\n").forEach(function(e){if(e.startsWith(t)){var n=function(e){var r=e.replace(t,"").replace("] = ","").replace(";","").replace(/'/g,"").replace(/"/g,""),n=r.split(",");if(4!==n.length)throw new Error("invalid muni record: "+r);return{prefCode:n[0],prefName:n[1],cityCode:n[2],cityName:n[3]}}(e);r[n.cityCode]=n}}),r}(e.data)})}catch(e){return Promise.reject(e)}},o=null;exports.getMuniMap=n,exports.latLonToAddressInfo=function(e,t){return Promise.resolve(function(e,t){try{return Promise.resolve(r.default.get("https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress",{responseType:"json",params:{lat:e,lon:t}})).then(function(e){return e.data})}catch(e){return Promise.reject(e)}}(e,t)).then(function(e){function r(){return o[t.muniCd]}var t=e.results;if(!t||!t.muniCd)throw new Error("No address found");var i=function(){if(!o)return console.log("getMuniMap"),Promise.resolve(n()).then(function(e){o=e})}();return i&&i.then?i.then(r):r()})};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["const
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/muni.ts","../src/index.ts"],"sourcesContent":["// Muni file url\nconst MuniURL = 'https://maps.gsi.go.jp/js/muni.js';\nconst MuniRecordPrefix = 'GSI.MUNI_ARRAY[';\n\nimport axios from 'axios';\nimport { AddressResults, MuniMap } from './types';\n\n/**\n * parse muni.js\n * @param muniMap\n */\nconst parseMuniMap = (muniMap: string) => {\n const muniMapObj: MuniMap = {};\n const lines = muniMap.split('\\n');\n lines.forEach((line) => {\n if (line.startsWith(MuniRecordPrefix)) {\n const muniRecord = parseMuniRecord(line);\n muniMapObj[muniRecord.cityCode] = muniRecord;\n }\n });\n return muniMapObj;\n};\n\n/**\n * parse muni record\n * @param line\n */\nconst parseMuniRecord = (line: string) => {\n // every line should start with GSI.MUNI_ARRAY[ and end with ];\n // e.g. GSI.MUNI_ARRAY[\"47212\"] = '47,大分県,47212,佐伯市';\n // we need to extract 47,大分県,47212,佐伯市\n const muniRecord = line\n .replace(MuniRecordPrefix, '')\n .replace(\"] = \", '')\n .replace(\";\", '')\n .replace(/'/g, '')\n .replace(/\"/g, '');\n\n const muniRecordArray = muniRecord.split(',');\n\n // validate muni record\n if (muniRecordArray.length !== 4) {\n throw new Error(`invalid muni record: ${muniRecord}`);\n }\n\n return {\n prefCode: muniRecordArray[0],\n prefName: muniRecordArray[1],\n cityCode: muniRecordArray[2],\n cityName: muniRecordArray[3],\n };\n};\n\n/**\n * Get muni map (city or ward map by city code) from GSI\n */\nconst getMuniMap = async () => {\n const response = await axios.get(MuniURL, {\n responseType: 'text',\n });\n\n const muniMap = response.data;\n return parseMuniMap(muniMap);\n};\n\n/**\n * converts muni code to address name.\n *\n * @param muniMap\n * @param muniCode\n */\nconst muniCodeToAddressName = (muniMap: MuniMap, muniCode: string) => {\n const muniRecord = muniMap[muniCode];\n if (!muniRecord) {\n throw new Error(`muni code ${muniCode} not found`);\n }\n\n return `${muniRecord.prefName}${muniRecord.cityName}`;\n};\n\n/**\n * converts address result to address name.\n * @param muniMap\n * @param addressResults\n */\nconst addressResultsToAddressName = (\n muniMap: MuniMap,\n addressResults: AddressResults\n) => {\n const mc = addressResults.muniCd;\n const muniName = muniCodeToAddressName(muniMap, mc);\n const addrName = `${muniName}${addressResults.lv01Nm}`;\n return addrName;\n};\n\nexport { getMuniMap, muniCodeToAddressName, addressResultsToAddressName };\n","import axios from 'axios';\n\nimport { ReverseGeocodeResults, MuniMap, MuniRecord } from './types';\nimport { addressResultsToAddressName, getMuniMap } from './muni';\nconst BaseURL = 'https://mreversegeocoder.gsi.go.jp';\n\n// cache muni map\nvar muniMap: MuniMap | null = null;\n\n/**\n * reverse geocoding by latitude and longitude to address\n * It returns town name only\n *\n * @param lat\n * @param lon\n * @returns address\n */\nconst latLonToAddress = async (\n lat: number,\n lon: number\n): Promise<ReverseGeocodeResults> => {\n const url = `${BaseURL}/reverse-geocoder/LonLatToAddress`;\n const response = await axios.get(url, {\n responseType: 'json',\n params: {\n lat,\n lon,\n },\n });\n\n const res = response.data;\n return res;\n};\n\n/**\n * Get full address name by latitude and longitude\n * @param lat\n * @param lon\n * @returns prefecture + city + town\n */\nconst latLonToAddressName = async (\n lat: number,\n lon: number\n): Promise<string> => {\n const res = await latLonToAddress(lat, lon);\n const { results } = res;\n if (!results || !results.muniCd) {\n throw new Error('No address found');\n }\n\n // update muniMap\n if (!muniMap) {\n muniMap = await getMuniMap();\n }\n\n return addressResultsToAddressName(muniMap, results);\n};\n\nconst latLonToAddressInfo = async (\n lat: number,\n lon: number\n): Promise<MuniRecord> => {\n const res = await latLonToAddress(lat, lon);\n const { results } = res;\n if (!results || !results.muniCd) {\n throw new Error('No address found');\n }\n\n // update muniMap\n if (!muniMap) {\n console.log('getMuniMap');\n muniMap = await getMuniMap();\n }\n const mc = results.muniCd;\n return muniMap[mc];\n};\n\nexport {\n latLonToAddressInfo,\n getMuniMap,\n};\n"],"names":["MuniRecordPrefix","getMuniMap","Promise","resolve","axios","get","responseType","then","response","muniMap","muniMapObj","split","forEach","line","startsWith","muniRecord","replace","muniRecordArray","length","Error","prefCode","prefName","cityCode","cityName","parseMuniRecord","parseMuniMap","data","e","reject","lat","lon","BaseURL","params","latLonToAddress","res","_temp4","results","muniCd","_temp3","console","log","_getMuniMap2"],"mappings":"+GAEMA,EAAmB,kBAsDnBC,aAAwB,IAAA,OAAAC,QAAAC,QACLC,EAAAA,QAAMC,IAxDf,oCAwD4B,CACxCC,aAAc,UACdC,KAAA,SAFIC,GAKN,OAnDmB,SAACC,GACpB,IAAMC,EAAsB,CAAA,EAQ5B,OAPcD,EAAQE,MAAM,MACtBC,QAAQ,SAACC,GACb,GAAIA,EAAKC,WAAWd,GAAmB,CACrC,IAAMe,EAWY,SAACF,GAIvB,IAAME,EAAaF,EAChBG,QAAQhB,EAAkB,IAC1BgB,QAAQ,OAAQ,IAChBA,QAAQ,IAAK,IACbA,QAAQ,KAAM,IACdA,QAAQ,KAAM,IAEXC,EAAkBF,EAAWJ,MAAM,KAGzC,GAA+B,IAA3BM,EAAgBC,OAClB,UAAUC,8BAA8BJ,GAG1C,MAAO,CACLK,SAAUH,EAAgB,GAC1BI,SAAUJ,EAAgB,GAC1BK,SAAUL,EAAgB,GAC1BM,SAAUN,EAAgB,GAE9B,CAnCyBO,CAAgBX,GACnCH,EAAWK,EAAWO,UAAYP,CACnC,CACH,GACOL,CACT,CAyCSe,CADSjB,EAASkB,KACI,EAC/B,CAAC,MAAAC,GAAAzB,OAAAA,QAAA0B,OAAAD,EAQD,CAAA,EChEIlB,EAA0B,sDAmDxB,SACJoB,EACAC,GACuB,OAAA5B,QAAAC,QA5CJ,SACnB0B,EACAC,GACkC,IACwB,OAAA5B,QAAAC,QACnCC,EAAK,QAACC,IADd0B,sEACuB,CACpCzB,aAAc,OACd0B,OAAQ,CACNH,IAAAA,EACAC,IAAAA,MAEFvB,cANIC,GASN,OADYA,EAASkB,IACV,EACb,CAAC,MAAAC,UAAAzB,QAAA0B,OAAAD,EAQD,CAAA,CAsBoBM,CAAgBJ,EAAKC,IAAIvB,KAAA,SAArC2B,GAAG,SAAAC,IAYT,OAAO1B,EADI2B,EAAQC,OACA,CAXnB,IAAQD,EAAYF,EAAZE,QACR,IAAKA,IAAYA,EAAQC,OACvB,UAAUlB,MAAM,oBACjB,IAAAmB,EAAA,WAAA,IAGI7B,EACuB,OAA1B8B,QAAQC,IAAI,cAActC,QAAAC,QACVF,KAAYM,KAAA,SAAAkC,GAA5BhC,EAAOgC,CAAsB,GAL9B,UAK8BH,GAAAA,EAAA/B,KAAA+B,EAAA/B,KAAA4B,GAAAA,GAIjC,EAAA"}
|
package/dist/index.module.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Promise.resolve().catch(console.
|
|
1
|
+
import e from"axios";var r="GSI.MUNI_ARRAY[",t=function(){try{return Promise.resolve(e.get("https://maps.gsi.go.jp/js/muni.js",{responseType:"text"})).then(function(e){return function(e){var t={};return e.split("\n").forEach(function(e){if(e.startsWith(r)){var n=function(e){var t=e.replace(r,"").replace("] = ","").replace(";","").replace(/'/g,"").replace(/"/g,""),n=t.split(",");if(4!==n.length)throw new Error("invalid muni record: "+t);return{prefCode:n[0],prefName:n[1],cityCode:n[2],cityName:n[3]}}(e);t[n.cityCode]=n}}),t}(e.data)})}catch(e){return Promise.reject(e)}},n=null,o=function(r,o){return Promise.resolve(function(r,t){try{return Promise.resolve(e.get("https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress",{responseType:"json",params:{lat:r,lon:t}})).then(function(e){return e.data})}catch(e){return Promise.reject(e)}}(r,o)).then(function(e){function r(){return n[o.muniCd]}var o=e.results;if(!o||!o.muniCd)throw new Error("No address found");var i=function(){if(!n)return console.log("getMuniMap"),Promise.resolve(t()).then(function(e){n=e})}();return i&&i.then?i.then(r):r()})};export{t as getMuniMap,o as latLonToAddressInfo};
|
|
2
2
|
//# sourceMappingURL=index.module.js.map
|
package/dist/index.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.js","sources":["../src/index.ts"],"sourcesContent":["const
|
|
1
|
+
{"version":3,"file":"index.module.js","sources":["../src/muni.ts","../src/index.ts"],"sourcesContent":["// Muni file url\nconst MuniURL = 'https://maps.gsi.go.jp/js/muni.js';\nconst MuniRecordPrefix = 'GSI.MUNI_ARRAY[';\n\nimport axios from 'axios';\nimport { AddressResults, MuniMap } from './types';\n\n/**\n * parse muni.js\n * @param muniMap\n */\nconst parseMuniMap = (muniMap: string) => {\n const muniMapObj: MuniMap = {};\n const lines = muniMap.split('\\n');\n lines.forEach((line) => {\n if (line.startsWith(MuniRecordPrefix)) {\n const muniRecord = parseMuniRecord(line);\n muniMapObj[muniRecord.cityCode] = muniRecord;\n }\n });\n return muniMapObj;\n};\n\n/**\n * parse muni record\n * @param line\n */\nconst parseMuniRecord = (line: string) => {\n // every line should start with GSI.MUNI_ARRAY[ and end with ];\n // e.g. GSI.MUNI_ARRAY[\"47212\"] = '47,大分県,47212,佐伯市';\n // we need to extract 47,大分県,47212,佐伯市\n const muniRecord = line\n .replace(MuniRecordPrefix, '')\n .replace(\"] = \", '')\n .replace(\";\", '')\n .replace(/'/g, '')\n .replace(/\"/g, '');\n\n const muniRecordArray = muniRecord.split(',');\n\n // validate muni record\n if (muniRecordArray.length !== 4) {\n throw new Error(`invalid muni record: ${muniRecord}`);\n }\n\n return {\n prefCode: muniRecordArray[0],\n prefName: muniRecordArray[1],\n cityCode: muniRecordArray[2],\n cityName: muniRecordArray[3],\n };\n};\n\n/**\n * Get muni map (city or ward map by city code) from GSI\n */\nconst getMuniMap = async () => {\n const response = await axios.get(MuniURL, {\n responseType: 'text',\n });\n\n const muniMap = response.data;\n return parseMuniMap(muniMap);\n};\n\n/**\n * converts muni code to address name.\n *\n * @param muniMap\n * @param muniCode\n */\nconst muniCodeToAddressName = (muniMap: MuniMap, muniCode: string) => {\n const muniRecord = muniMap[muniCode];\n if (!muniRecord) {\n throw new Error(`muni code ${muniCode} not found`);\n }\n\n return `${muniRecord.prefName}${muniRecord.cityName}`;\n};\n\n/**\n * converts address result to address name.\n * @param muniMap\n * @param addressResults\n */\nconst addressResultsToAddressName = (\n muniMap: MuniMap,\n addressResults: AddressResults\n) => {\n const mc = addressResults.muniCd;\n const muniName = muniCodeToAddressName(muniMap, mc);\n const addrName = `${muniName}${addressResults.lv01Nm}`;\n return addrName;\n};\n\nexport { getMuniMap, muniCodeToAddressName, addressResultsToAddressName };\n","import axios from 'axios';\n\nimport { ReverseGeocodeResults, MuniMap, MuniRecord } from './types';\nimport { addressResultsToAddressName, getMuniMap } from './muni';\nconst BaseURL = 'https://mreversegeocoder.gsi.go.jp';\n\n// cache muni map\nvar muniMap: MuniMap | null = null;\n\n/**\n * reverse geocoding by latitude and longitude to address\n * It returns town name only\n *\n * @param lat\n * @param lon\n * @returns address\n */\nconst latLonToAddress = async (\n lat: number,\n lon: number\n): Promise<ReverseGeocodeResults> => {\n const url = `${BaseURL}/reverse-geocoder/LonLatToAddress`;\n const response = await axios.get(url, {\n responseType: 'json',\n params: {\n lat,\n lon,\n },\n });\n\n const res = response.data;\n return res;\n};\n\n/**\n * Get full address name by latitude and longitude\n * @param lat\n * @param lon\n * @returns prefecture + city + town\n */\nconst latLonToAddressName = async (\n lat: number,\n lon: number\n): Promise<string> => {\n const res = await latLonToAddress(lat, lon);\n const { results } = res;\n if (!results || !results.muniCd) {\n throw new Error('No address found');\n }\n\n // update muniMap\n if (!muniMap) {\n muniMap = await getMuniMap();\n }\n\n return addressResultsToAddressName(muniMap, results);\n};\n\nconst latLonToAddressInfo = async (\n lat: number,\n lon: number\n): Promise<MuniRecord> => {\n const res = await latLonToAddress(lat, lon);\n const { results } = res;\n if (!results || !results.muniCd) {\n throw new Error('No address found');\n }\n\n // update muniMap\n if (!muniMap) {\n console.log('getMuniMap');\n muniMap = await getMuniMap();\n }\n const mc = results.muniCd;\n return muniMap[mc];\n};\n\nexport {\n latLonToAddressInfo,\n getMuniMap,\n};\n"],"names":["MuniRecordPrefix","getMuniMap","Promise","resolve","axios","get","responseType","then","response","muniMap","muniMapObj","split","forEach","line","startsWith","muniRecord","replace","muniRecordArray","length","Error","prefCode","prefName","cityCode","cityName","parseMuniRecord","parseMuniMap","data","e","reject","latLonToAddressInfo","lat","lon","BaseURL","params","latLonToAddress","res","_temp4","results","muniCd","_temp3","console","log","_getMuniMap2"],"mappings":"qBACA,IACMA,EAAmB,kBAsDnBC,aAAwB,IAAA,OAAAC,QAAAC,QACLC,EAAMC,IAxDf,oCAwD4B,CACxCC,aAAc,UACdC,KAAA,SAFIC,GAKN,OAnDmB,SAACC,GACpB,IAAMC,EAAsB,CAAA,EAQ5B,OAPcD,EAAQE,MAAM,MACtBC,QAAQ,SAACC,GACb,GAAIA,EAAKC,WAAWd,GAAmB,CACrC,IAAMe,EAWY,SAACF,GAIvB,IAAME,EAAaF,EAChBG,QAAQhB,EAAkB,IAC1BgB,QAAQ,OAAQ,IAChBA,QAAQ,IAAK,IACbA,QAAQ,KAAM,IACdA,QAAQ,KAAM,IAEXC,EAAkBF,EAAWJ,MAAM,KAGzC,GAA+B,IAA3BM,EAAgBC,OAClB,UAAUC,8BAA8BJ,GAG1C,MAAO,CACLK,SAAUH,EAAgB,GAC1BI,SAAUJ,EAAgB,GAC1BK,SAAUL,EAAgB,GAC1BM,SAAUN,EAAgB,GAE9B,CAnCyBO,CAAgBX,GACnCH,EAAWK,EAAWO,UAAYP,CACnC,CACH,GACOL,CACT,CAyCSe,CADSjB,EAASkB,KACI,EAC/B,CAAC,MAAAC,GAAAzB,OAAAA,QAAA0B,OAAAD,EAQD,CAAA,EChEIlB,EAA0B,KAmDxBoB,EAAA,SACJC,EACAC,GACuB,OAAA7B,QAAAC,QA5CJ,SACnB2B,EACAC,GACkC,IACwB,OAAA7B,QAAAC,QACnCC,EAAMC,IADd2B,sEACuB,CACpC1B,aAAc,OACd2B,OAAQ,CACNH,IAAAA,EACAC,IAAAA,MAEFxB,cANIC,GASN,OADYA,EAASkB,IACV,EACb,CAAC,MAAAC,UAAAzB,QAAA0B,OAAAD,EAQD,CAAA,CAsBoBO,CAAgBJ,EAAKC,IAAIxB,KAAA,SAArC4B,GAAG,SAAAC,IAYT,OAAO3B,EADI4B,EAAQC,OACA,CAXnB,IAAQD,EAAYF,EAAZE,QACR,IAAKA,IAAYA,EAAQC,OACvB,UAAUnB,MAAM,oBACjB,IAAAoB,EAAA,WAAA,IAGI9B,EACuB,OAA1B+B,QAAQC,IAAI,cAAcvC,QAAAC,QACVF,KAAYM,KAAA,SAAAmC,GAA5BjC,EAAOiC,CAAsB,GAL9B,UAK8BH,GAAAA,EAAAhC,KAAAgC,EAAAhC,KAAA6B,GAAAA,GAIjC,EAAA"}
|
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e){"function"==typeof define&&define.amd?define(e):e()}(function(){Promise.resolve().catch(console.
|
|
1
|
+
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("axios")):"function"==typeof define&&define.amd?define(["exports","axios"],r):r((e||self).jsMsearchGsiJp={},e.axios)}(this,function(e,r){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=/*#__PURE__*/t(r),o="GSI.MUNI_ARRAY[",i=function(){try{return Promise.resolve(n.default.get("https://maps.gsi.go.jp/js/muni.js",{responseType:"text"})).then(function(e){return function(e){var r={};return e.split("\n").forEach(function(e){if(e.startsWith(o)){var t=function(e){var r=e.replace(o,"").replace("] = ","").replace(";","").replace(/'/g,"").replace(/"/g,""),t=r.split(",");if(4!==t.length)throw new Error("invalid muni record: "+r);return{prefCode:t[0],prefName:t[1],cityCode:t[2],cityName:t[3]}}(e);r[t.cityCode]=t}}),r}(e.data)})}catch(e){return Promise.reject(e)}},s=null;e.getMuniMap=i,e.latLonToAddressInfo=function(e,r){return Promise.resolve(function(e,r){try{return Promise.resolve(n.default.get("https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress",{responseType:"json",params:{lat:e,lon:r}})).then(function(e){return e.data})}catch(e){return Promise.reject(e)}}(e,r)).then(function(e){function r(){return s[t.muniCd]}var t=e.results;if(!t||!t.muniCd)throw new Error("No address found");var n=function(){if(!s)return console.log("getMuniMap"),Promise.resolve(i()).then(function(e){s=e})}();return n&&n.then?n.then(r):r()})}});
|
|
2
2
|
//# sourceMappingURL=index.umd.js.map
|
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/index.ts"],"sourcesContent":["const
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/muni.ts","../src/index.ts"],"sourcesContent":["// Muni file url\nconst MuniURL = 'https://maps.gsi.go.jp/js/muni.js';\nconst MuniRecordPrefix = 'GSI.MUNI_ARRAY[';\n\nimport axios from 'axios';\nimport { AddressResults, MuniMap } from './types';\n\n/**\n * parse muni.js\n * @param muniMap\n */\nconst parseMuniMap = (muniMap: string) => {\n const muniMapObj: MuniMap = {};\n const lines = muniMap.split('\\n');\n lines.forEach((line) => {\n if (line.startsWith(MuniRecordPrefix)) {\n const muniRecord = parseMuniRecord(line);\n muniMapObj[muniRecord.cityCode] = muniRecord;\n }\n });\n return muniMapObj;\n};\n\n/**\n * parse muni record\n * @param line\n */\nconst parseMuniRecord = (line: string) => {\n // every line should start with GSI.MUNI_ARRAY[ and end with ];\n // e.g. GSI.MUNI_ARRAY[\"47212\"] = '47,大分県,47212,佐伯市';\n // we need to extract 47,大分県,47212,佐伯市\n const muniRecord = line\n .replace(MuniRecordPrefix, '')\n .replace(\"] = \", '')\n .replace(\";\", '')\n .replace(/'/g, '')\n .replace(/\"/g, '');\n\n const muniRecordArray = muniRecord.split(',');\n\n // validate muni record\n if (muniRecordArray.length !== 4) {\n throw new Error(`invalid muni record: ${muniRecord}`);\n }\n\n return {\n prefCode: muniRecordArray[0],\n prefName: muniRecordArray[1],\n cityCode: muniRecordArray[2],\n cityName: muniRecordArray[3],\n };\n};\n\n/**\n * Get muni map (city or ward map by city code) from GSI\n */\nconst getMuniMap = async () => {\n const response = await axios.get(MuniURL, {\n responseType: 'text',\n });\n\n const muniMap = response.data;\n return parseMuniMap(muniMap);\n};\n\n/**\n * converts muni code to address name.\n *\n * @param muniMap\n * @param muniCode\n */\nconst muniCodeToAddressName = (muniMap: MuniMap, muniCode: string) => {\n const muniRecord = muniMap[muniCode];\n if (!muniRecord) {\n throw new Error(`muni code ${muniCode} not found`);\n }\n\n return `${muniRecord.prefName}${muniRecord.cityName}`;\n};\n\n/**\n * converts address result to address name.\n * @param muniMap\n * @param addressResults\n */\nconst addressResultsToAddressName = (\n muniMap: MuniMap,\n addressResults: AddressResults\n) => {\n const mc = addressResults.muniCd;\n const muniName = muniCodeToAddressName(muniMap, mc);\n const addrName = `${muniName}${addressResults.lv01Nm}`;\n return addrName;\n};\n\nexport { getMuniMap, muniCodeToAddressName, addressResultsToAddressName };\n","import axios from 'axios';\n\nimport { ReverseGeocodeResults, MuniMap, MuniRecord } from './types';\nimport { addressResultsToAddressName, getMuniMap } from './muni';\nconst BaseURL = 'https://mreversegeocoder.gsi.go.jp';\n\n// cache muni map\nvar muniMap: MuniMap | null = null;\n\n/**\n * reverse geocoding by latitude and longitude to address\n * It returns town name only\n *\n * @param lat\n * @param lon\n * @returns address\n */\nconst latLonToAddress = async (\n lat: number,\n lon: number\n): Promise<ReverseGeocodeResults> => {\n const url = `${BaseURL}/reverse-geocoder/LonLatToAddress`;\n const response = await axios.get(url, {\n responseType: 'json',\n params: {\n lat,\n lon,\n },\n });\n\n const res = response.data;\n return res;\n};\n\n/**\n * Get full address name by latitude and longitude\n * @param lat\n * @param lon\n * @returns prefecture + city + town\n */\nconst latLonToAddressName = async (\n lat: number,\n lon: number\n): Promise<string> => {\n const res = await latLonToAddress(lat, lon);\n const { results } = res;\n if (!results || !results.muniCd) {\n throw new Error('No address found');\n }\n\n // update muniMap\n if (!muniMap) {\n muniMap = await getMuniMap();\n }\n\n return addressResultsToAddressName(muniMap, results);\n};\n\nconst latLonToAddressInfo = async (\n lat: number,\n lon: number\n): Promise<MuniRecord> => {\n const res = await latLonToAddress(lat, lon);\n const { results } = res;\n if (!results || !results.muniCd) {\n throw new Error('No address found');\n }\n\n // update muniMap\n if (!muniMap) {\n console.log('getMuniMap');\n muniMap = await getMuniMap();\n }\n const mc = results.muniCd;\n return muniMap[mc];\n};\n\nexport {\n latLonToAddressInfo,\n getMuniMap,\n};\n"],"names":["MuniRecordPrefix","getMuniMap","Promise","resolve","axios","get","responseType","then","response","muniMap","muniMapObj","split","forEach","line","startsWith","muniRecord","replace","muniRecordArray","length","Error","prefCode","prefName","cityCode","cityName","parseMuniRecord","parseMuniMap","data","e","reject","lat","lon","BaseURL","params","latLonToAddress","res","_temp4","results","muniCd","_temp3","console","log","_getMuniMap2"],"mappings":"2WAEMA,EAAmB,kBAsDnBC,aAAwB,IAAA,OAAAC,QAAAC,QACLC,EAAAA,QAAMC,IAxDf,oCAwD4B,CACxCC,aAAc,UACdC,KAAA,SAFIC,GAKN,OAnDmB,SAACC,GACpB,IAAMC,EAAsB,CAAA,EAQ5B,OAPcD,EAAQE,MAAM,MACtBC,QAAQ,SAACC,GACb,GAAIA,EAAKC,WAAWd,GAAmB,CACrC,IAAMe,EAWY,SAACF,GAIvB,IAAME,EAAaF,EAChBG,QAAQhB,EAAkB,IAC1BgB,QAAQ,OAAQ,IAChBA,QAAQ,IAAK,IACbA,QAAQ,KAAM,IACdA,QAAQ,KAAM,IAEXC,EAAkBF,EAAWJ,MAAM,KAGzC,GAA+B,IAA3BM,EAAgBC,OAClB,UAAUC,8BAA8BJ,GAG1C,MAAO,CACLK,SAAUH,EAAgB,GAC1BI,SAAUJ,EAAgB,GAC1BK,SAAUL,EAAgB,GAC1BM,SAAUN,EAAgB,GAE9B,CAnCyBO,CAAgBX,GACnCH,EAAWK,EAAWO,UAAYP,CACnC,CACH,GACOL,CACT,CAyCSe,CADSjB,EAASkB,KACI,EAC/B,CAAC,MAAAC,GAAAzB,OAAAA,QAAA0B,OAAAD,EAQD,CAAA,EChEIlB,EAA0B,0CAmDxB,SACJoB,EACAC,GACuB,OAAA5B,QAAAC,QA5CJ,SACnB0B,EACAC,GACkC,IACwB,OAAA5B,QAAAC,QACnCC,EAAK,QAACC,IADd0B,sEACuB,CACpCzB,aAAc,OACd0B,OAAQ,CACNH,IAAAA,EACAC,IAAAA,MAEFvB,cANIC,GASN,OADYA,EAASkB,IACV,EACb,CAAC,MAAAC,UAAAzB,QAAA0B,OAAAD,EAQD,CAAA,CAsBoBM,CAAgBJ,EAAKC,IAAIvB,KAAA,SAArC2B,GAAG,SAAAC,IAYT,OAAO1B,EADI2B,EAAQC,OACA,CAXnB,IAAQD,EAAYF,EAAZE,QACR,IAAKA,IAAYA,EAAQC,OACvB,UAAUlB,MAAM,oBACjB,IAAAmB,EAAA,WAAA,IAGI7B,EACuB,OAA1B8B,QAAQC,IAAI,cAActC,QAAAC,QACVF,KAAYM,KAAA,SAAAkC,GAA5BhC,EAAOgC,CAAsB,GAL9B,UAK8BH,GAAAA,EAAA/B,KAAA+B,EAAA/B,KAAA4B,GAAAA,GAIjC,EAAA"}
|
package/dist/muni.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AddressResults, MuniMap } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Get muni map (city or ward map by city code) from GSI
|
|
4
|
+
*/
|
|
5
|
+
declare const getMuniMap: () => Promise<MuniMap>;
|
|
6
|
+
/**
|
|
7
|
+
* converts muni code to address name.
|
|
8
|
+
*
|
|
9
|
+
* @param muniMap
|
|
10
|
+
* @param muniCode
|
|
11
|
+
*/
|
|
12
|
+
declare const muniCodeToAddressName: (muniMap: MuniMap, muniCode: string) => string;
|
|
13
|
+
/**
|
|
14
|
+
* converts address result to address name.
|
|
15
|
+
* @param muniMap
|
|
16
|
+
* @param addressResults
|
|
17
|
+
*/
|
|
18
|
+
declare const addressResultsToAddressName: (muniMap: MuniMap, addressResults: AddressResults) => string;
|
|
19
|
+
export { getMuniMap, muniCodeToAddressName, addressResultsToAddressName };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sk-global/js-msearch-gsi-jp",
|
|
3
3
|
"description": "A client library for APIs that presented by Geospatial Information Authority of Japan",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "1.0.0",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.module.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"node": ">=18.0.0"
|
|
16
16
|
},
|
|
17
17
|
"scripts": {
|
|
18
|
-
"dev": "ts-node ./src/
|
|
18
|
+
"dev": "ts-node ./src/local.ts",
|
|
19
19
|
"build": "microbundle --define PKG_VERSION=$npm_package_version",
|
|
20
20
|
"watch": "microbundle watch --define PKG_VERSION=$npm_package_version",
|
|
21
21
|
"test": "jest --coverage",
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"author": "SK-Global",
|
|
50
50
|
"dependencies": {
|
|
51
|
+
"axios": "^1.7.3"
|
|
51
52
|
},
|
|
52
53
|
"repository": {
|
|
53
54
|
"type": "git",
|