Introduction
感謝您使用 台灣圖霸 | Map8 Platform 地圖平台 -- 客供地理資料 (MyPlaces) API!
MyPlaces API 為 台灣圖霸 因應客戶時常有自行維護地理資料的使用情境,推出讓您能夠依照自己的需求,即時地建立及維護您地圖平台上運用所需的地理資料集的 API 集合;MyPlaces API 提供了用戶多種地理運算的方式 (例如: 範圍搜尋、交集選取) 來查找您所建立的資料,方便您透過程式化的方式來存取及維護;您也可以儲存您自訂的 JSON 格式資料,讓您的應用更加有彈性、更具競爭力。
Notation
- 左右鍵符號 (大於、小於符號, 也就是
<
>
) 所描述的是一個變數 (variable) 的 formal parameter 形式。本文件底下若提及參數部分,使用到此表示法時,請讀者將之代換成實際的內容 (也就是代換為 actual parameter,並且,不留下<
>
符號)。例如,https://api.map8.zone/find?keyword=<關鍵詞>
若實際關鍵詞為 taiwan,則實際呼叫時,應代換為https://api.map8.zone/find?keyword=taiwan。
- 位於 API 欄位內格式的
<參數>
,為標準的 URL 之 query string 格式編碼 (i.e.,name=value
以 URL%
編碼, 並以&
連接) - 除非另有指定,否則,地理經緯度座標 (lat 或 latitude 均指經度,lng 或 longitude 均指緯度) 以 WGS84 / EPSG:4326 為地理座標系統
基礎資料結構
客供地理資料集我們已為用戶制定了基礎常用的欄位,詳如下表:
Field | Type | Description |
---|---|---|
UUID | 32 個字元 | 僅允許 [a-zA-Z0-9] 與底線 (underscore). 除外之字元, 包括 unicode, 或是符號字元如 dash, pound sign, slash 等等均不允許,請勿使用. (例如, ATM00001 ) |
name | TEXT (最長 32 字元) |
此筆地理資料之名稱 (例如, 統一安佃 ) |
city | TEXT (最長 16 字元) |
此筆地理資料所屬之城市 (例如, 台南市 ) |
town | TEXT (最長 16 字元) |
此筆地理資料所屬之行政區 (例如, 安南區 ) |
addr | TEXT (最長 64 字元) |
此筆地理資料之地址 (例如, 台南市安南區海佃路四段548號 ) |
tel | TEXT (最長 64 字元) |
此筆地理資料之電話 (例如, 06-87921567 ) |
lat | FLOAT | 此筆地理資料之緯度 (WGS84 / EPSG:4326) (例如, 23.0646486829 ) |
lng | FLOAT | 此筆地理資料之經度 (WGS84 / EPSG:4326) (例如, 120.172123715 ) |
polygonLatLngArray | TEXT (最長 4096 字元) |
此筆地理資料之多邊形幾何座標描述 (僅支援 Well-known text 格式),若您需要使用交集選取的 API,則需要維護此欄位。 |
cat | TEXT (最長 16 字元) |
此筆地理資料之類型標記 (例如, ATM ) 可運用於篩選 |
desc | TEXT (最長為 1024 字元) |
此筆地理資料之附加資料。您可以運用 JSON 格式來定義您自己所需要的欄位及內容,達成擴充資訊的目的以符合您的應用所需。 |
注意事項
- 輸入時,此些欄位為必須:
UUID
- (
lat
,lng
) 或是addr
之一為必須。若為addr
而無座標 (lat
,lng
),則由台灣圖霸系統為您做地址定位。
- 其他欄位均為 optional;並按照您當時輸入的內容,忠實於查詢結果中帶回給您
- 因此,您可以透過給入可供您自訂之
cat
欄位, 藉以於呼叫查詢 API 時直接限定。 - 或是, 透過
desc
欄位的給入, 以利於查詢結果時, 取回您自訂的其他資料欄位 (您甚至可以將之 JSON encode, 以便您取回後可以輕鬆直接 decode 回 JSON 物件使用) polygonLatLngArray
欄位為交集選取所用以判定其空間上是否交集的依據,若您需要使用交集選取功能,則必須維護此欄位。
- 因此,您可以透過給入可供您自訂之
API Index
客供地理資料 (MyPlaces) API
[Create / Update] 建立、更新資料
POST data 範例
[
{
"UUID": "CCTV00001",
"name": "101.台江大道、海佃路四段",
"city": "台南市",
"town": "安南區",
"lat": 23.0611431585022,
"lng": 120.177289169092,
"cat": "CCTV",
"desc": "{\"DeviceID\":\"294\",\"DeviceIP\":\"10.1.65.101\",\"DeviceName\":\"101.台江大道、海佃路四段\",\"ChannelNum\":\"0\",\"CameraID\":\"1660\",\"CameraName\":\"1.台江大道西向腳踏車道後車牌\"}"
},
{
"UUID": "ATM00001",
"name": "統一安佃",
"city": "台南市",
"town": "安南區",
"cat": "ATM",
"addr": "台南市安南區海佃路四段548號",
"lat": 23.0646486829,
"lng": 120.172123715,
"desc": "{\"ResponsiblePrecinct\":\"第三分局\",\"ResponsiblePoliceStation\":\"原佃派出所\",\"FinancialInstitutionCode\":\"822\",\"FinancialInstitution\":\"中國信託商業銀行\",\"LocationName\":\"統一安佃\",\"LocationProperties\":\"超商\"}"
},
{
"UUID":"PLG00001",
"city":"台北市",
"town":"內湖區",
"name":"九華公園",
"lat":25.08837,
"lng":121.55976,
"cat":"公園",
"desc":"{\"customId\":\"0001\"}",
"polygonLatLngArray":"POLYGON((121.56102745589806 25.0888265420256, 121.56117194062625 25.088766723582623, 121.56190262053389 25.088770462236724, 121.56192738934607 25.088650825267763, 121.56190674866957 25.088527449520413, 121.56180767342772 25.08846763093122, 121.56172511072663 25.088478846919628, 121.561176068762 25.08845641494284, 121.5610769935202 25.088624654665068, 121.56102745589806 25.0888265420256))"
}
]
建立、更新成功的輸出資料範例
Total number of your input rows = 1848
...
[2020-06-23T14:06:34+00:00] Number of rows processed = 185 (10.01%)
...
[2020-06-23T14:07:46+00:00] Number of rows processed = 370 (20.02%)
...
[2020-06-23T14:16:01+00:00] Number of rows processed = 1848 (100.00%)
{"status":"OK"}
- API :
https://api.map8.zone/v2/myplaces?<參數>
- HTTP Method :
- PUT
- Synopsis
- <參數>
- key
- 必要參數,請帶進您的 key。
- collection_id
- 選擇性參數,指定資料集名稱;若不指定則使用您預設的資料集。
- key
- POST Data
- 如右側
POST data 範例
- 如右側
- <參數>
- Response
- 成功的情況最終會輸出
{"status":"OK"}
- 建立、更新的資訊會隨著過程輸出,詳如右側
建立、更新成功的輸出資料範例
)
- 建立、更新的資訊會隨著過程輸出,詳如右側
- 失敗的情況最終將以 JSON 結構輸出不為
OK
之status
, 例如{"status":"Internal Server Error"}
- 參見 HTTP Status Code 一節說明本 API 回傳值之一般通則
- 參見 "status" 欄位 一節說明 "status" 欄位的一般性意義
- 成功的情況最終會輸出
[Delete] 刪除資料
刪除資料成功的輸出範例
{"status":"OK","deleted":{"collection_id":"","UUID":"<UUID1>,<UUID2>"}}
刪除資料失敗的輸出範例 (400)
{"status" => "INVALID_REQUEST","error":"`UUID` not specified."}
刪除資料失敗的輸出範例 (500)
{"status":"Internal Server Error","attempt-to-delete":{"collection_id":"","UUID":"<UUID1>,<UUID2>"}}
- API :
https://api.map8.zone/v2/myplaces?<參數>
- Syntax :
- 刪除指定 UUID 之資料
https://api.map8.zone/v2/myplaces?key=<您的 key>&UUID=<UUID1>,<UUID2>,...
- 刪除全部資料
https://api.map8.zone/v2/myplaces?key=<您的 key>&UUID=*
- 刪除指定 UUID 之資料
- HTTP Method :
- DELETE
Synopsis
- <參數>
- key
- 必要參數,請帶進您的 key。
- UUID
- 必要參數,請帶入您欲刪除之資料的 UUID;可指定多筆,每筆之間以半形逗號 (
,
) 做分隔。
- 必要參數,請帶入您欲刪除之資料的 UUID;可指定多筆,每筆之間以半形逗號 (
- collection_id
- 選擇性參數,指定資料集名稱;若不指定則使用您預設的資料集。
- key
- <參數>
Response
- HTTP 200 並回應您
status
欄位為OK
與所刪除deleted
欄位內容為您的資料 id 與您指定的 UUID。 - HTTP 400 : 您的輸入有錯誤. 回應您
status
欄位為INVALID_REQUEST
與原因。 - HTTP 500 : 並回應您
status
欄位為Internal Server Error
與所刪除attempt-to-delete
欄位內容為您的資料 id 與您指定的 UUID。 - (以上輸出格式如詳如右側範例所示)
- 參見 HTTP Status Code 一節說明本 API 回傳值之一般通則
- 參見 "status" 欄位 一節說明 "status" 欄位的一般性意義
- HTTP 200 並回應您
[Read] 取得資料
輸出範例 (取得指定 UUID 之資料)
{
"html_attribution":[
"台灣圖霸",
"研鼎智能",
"PAPAGO!"
],
"results":[
{
"formatted_address":"",
"geometry":{
"location":{
"lat":24.35114181818182,
"lng":120.62548854545453
}
},
"id":"24002269",
"place_id":"VU1FAAQAQxZPNzxuNQR4LTAXKBB9RitRIB9hY2FaMxYOQAwACw==",
"name":"大甲國小",
"tel":"",
"city":"台中市",
"town":"大甲區",
"type":"地點",
"chain":"",
"branch":"",
"cat":"學校",
"kind":"",
"desc":"",
"geo":{
"type":"MultiPolygon",
"coordinates":[
[
[
[
120.624937,
24.352228
],
... (more points) ...
[
120.624937,
24.352228
]
]
]
]
}
}
],
"status":"OK"
}
輸出範例 (取得指定矩形範圍內之資料)
{
"html_attribution":[
"台灣圖霸",
"研鼎智能",
"PAPAGO!"
],
"results":[
{
"formatted_address":"",
"geometry":{
"location":{
"lat":24.345707714285716,
"lng":120.58818776190476
}
},
"id":"24002291",
"place_id":"VU1FAAQATB5PFA4YJykDDiJLMTNufyR+PR1la0J7KTo2Dl5XCw==",
"name":"大安國小",
"tel":"",
"city":"台中市",
"town":"大安區",
"type":"地點",
"chain":"",
"branch":"",
"cat":"學校",
"kind":"",
"desc":"",
"geo":{
"type":"MultiPolygon",
"coordinates":[
[
[
[
120.588257,
24.344463
],
... (more points) ...
[
120.588257,
24.344463
]
]
]
]
}
},
... (more results) ...,
{
"formatted_address":"",
"geometry":{
"location":{
"lat":24.34618783333333,
"lng":120.58655516666666
}
},
"id":"24002295",
"place_id":"VU1FAAQATBpPOgN5TzkEAlUrC0dffl5EJDgZeFp2KhM3NgcACw==",
"name":"台中市大安區公所",
"tel":"",
"city":"台中市",
"town":"大安區",
"type":"地點",
"chain":"",
"branch":"",
"cat":"政府機關",
"kind":"",
"desc":"",
"geo":{
"type":"MultiPolygon",
"coordinates":[
[
[
[
120.586612,
24.345911
],
... (more points) ...
[
120.586612,
24.345911
]
]
]
]
}
}
],
"status":"OK"
}
輸出範例 (取得全部資料)
{
"html_attribution":[
"台灣圖霸",
"研鼎智能",
"PAPAGO!"
],
"results":[
{
"formatted_address":"",
"geometry":{
"location":{
"lat":25.039962000000003,
"lng":121.5106695
}
},
"id":"24001648",
"place_id":"VU1FAAcEQRdPFjxBGkFkJhISAQYOUxB8RBNTWXBNVR9RFCAACw==",
"name":"國史館",
"tel":"",
"city":"台北市",
"town":"中正區",
"type":"地點",
"chain":"",
"branch":"",
"cat":"政府機關",
"kind":"",
"desc":"",
"geo":{
}
},
... (more results) ...,
{
"formatted_address":"",
"geometry":{
"location":{
"lat":25.038011,
"lng":121.514230875
}
},
"id":"24001634",
"place_id":"VU1FAAcERhtPGTxiRyh1C15OUgNjY192GCJlCUlOFSFQCg1XCw==",
"name":"北一女中",
"tel":"",
"city":"台北市",
"town":"中正區",
"type":"地點",
"chain":"",
"branch":"",
"cat":"學校",
"kind":"",
"desc":"",
"geo":{
}
}
],
"status":"OK",
"pagination":{
"firstPageNumber":1,
"lastPageNumber":602,
"pageRows":10,
"totalRows":6016
}
}
MyPlaces API 提供了多種取得資料的方式供您選擇使用,如下將為您一一說明:
- API :
https://api.map8.zone/v2/myplaces?<參數>
- Syntax :
- 取得指定 UUID 之資料
https://api.map8.zone/v2/myplaces?key=<您的 key>&type=UUID&UUID=<UUID>
- 取得指定矩形範圍內之資料
https://api.map8.zone/v2/myplaces?key=<您的 key>&type=boundingbox&bounds=<緯度-s>,<經度-w>;<緯度-n>,<經度-e>
- 取得全部資料
https://api.map8.zone/v2/myplaces?key=<您的 key>&type=all&pagenumber=<pagenumber>&pagerows=<pagerows>
- 取得指定 UUID 之資料
- HTTP Method :
- GET
- Synopsis
- <參數>
- key
- 必要參數,請帶進您的 key。
- type
- 必要參數,指定輸入圖徵的類型,應為
UUID
或boundingbox
或是all
。- 若為
UUID
,則 UUID 參數必須指定; 輸出指定 UUID 之資料及圖形。 - 若為
boundingbox
,則 bounds 參數必須指定; 輸出與 bounds 範圍(矩形)有交集之資料及圖形。 - 若為
all
,則 pagenumber 與 pagerows 參數將會被參考; 以分頁方式輸出全部資料及圖形。
- 若為
- 必要參數,指定輸入圖徵的類型,應為
- UUID
- 若 type =
UUID
, 為必要參數, 為欲搜尋資料之 UUID 字串。
- 若 type =
- bounds
- 若 type =
boundingbox
, 為必要參數, 指定之矩形範圍來查詢交集之圖徵(格式為 <緯度-s>,<經度-w>;<緯度-n>,<經度-e>),所指定的經度及緯度範圍上限分別為 0.2 度。
- 若 type =
- pagenumber
- 選擇性參數,適用於 type =
all
的情況,指定分頁頁碼,可不指定(預設值為 1)。若指定數字超過分頁數上限,則自動 fit 最大頁數。
- 選擇性參數,適用於 type =
- pagerows
- 選擇性參數,適用於 type =
all
的情況,指定分頁資料筆數,可不指定(預設值為 100),上限值為 200。
- 選擇性參數,適用於 type =
- collection_id
- 選擇性參數,指定資料集名稱;若不指定則使用您預設的資料集。
- geometry
- 選擇性參數,指定輸出的資料中是否要加入圖形幾何資料(格式為 GeoJSON,可供您直接繪製於地圖)。((
true
/false
; 預設為false
; 請注意true
/false
值以 如字面 (string literal) 帶入,而非以 1 / 0 或其它字元帶入)
- 選擇性參數,指定輸出的資料中是否要加入圖形幾何資料(格式為 GeoJSON,可供您直接繪製於地圖)。((
- key
- <參數>
- Response
- Status code: 200 OK
- 表示成功完成您的 request
- 各類別輸出格式如詳如右側範例所示
- HTTP 400 : 您的輸入有錯誤. 回應您
status
欄位為INVALID_REQUEST
與原因。 - HTTP 500 : 並回應您
status
欄位為Internal Server Error
。 - 參見 HTTP Status Code 一節說明本 API 回傳值之一般通則
- 參見 "status" 欄位 一節說明 "status" 欄位的一般性意義
- Status code: 200 OK
[Nearby search] 鄰近範圍搜尋
輸出資料範例
{
"html_attribution": [
"台灣圖霸",
"研鼎智能",
"PAPAGO!"
],
"results": [
{
"formatted_address": "新北市新店區中正路61號",
"geometry": {
"location": {
"lat": 24.99117899,
"lng": 121.312643511
}
},
"id": "730abad6-bd25-4342-bf9e-e1a8eea37c65",
"place_id": "730abad6-bd25-4342-bf9e-e1a8eea37c65",
"name": "誠品書店新店北新店",
"tel": "",
"city": "新北市",
"town": "新店區",
"type": "地點",
"chain": "",
"branch": "",
"cat": "生活消費",
"distance": 0,
"desc": "{\"whitelistId\":\"10000\",\"city\":\"新北市\",\"area\":\"新店區\",\"zipCode\":\"231\",\"website\":\"http://meet.eslite.com/tw/tc\",\"fb\":\"https://zh-tw.facebook.com/eslite\",\"contact\":\"林真真\",\"status\":0}"
}
],
"status": "OK"
}
指定中心座標及範圍,以進行鄰近搜尋。
- API :
https://api.map8.zone/v2/myplaces/nearbysearch/<輸出格式>?<參數>
- HTTP Method :
- GET
- Synopsis
- <輸出格式>
- 選擇性參數,目前僅支援
json
。本版本不理會此參數,response 一律以 JSON 格式回應。
- 選擇性參數,目前僅支援
- <參數>
- key
- 必要參數,請帶進您的 key。
- location
- 必要參數,要求系統依據給定的地理座標為搜尋中心點。格式為
<緯度>,<經度>
,分別為緯度與經度。
- 必要參數,要求系統依據給定的地理座標為搜尋中心點。格式為
- radius
- 選擇性參數,指定以上述
location
為中心,以本參數radius
指定方圓半徑之距離作為搜索範圍 (最大為 50.000 公里)。若未給,則由台灣圖霸系統自動智慧判斷。
- 選擇性參數,指定以上述
- limit
- 選擇性參數。指定取回的資料筆數。單次回應最多為 100 筆。
- cat
- 選擇性參數。若您的資料有維護類型欄位(cat), 則可以指定欲搜尋周遭之地點類型。
- 可多選 : 請直接列舉地點類型,透過逗號 (
,
) 加以分隔即可 (譬如cat=國小,國中,高中職校
)。
- postcode
- 選擇性參數 : 是否需要回傳三碼郵遞區號 (
true
/false
; 預設為false
; 請注意true
/false
值以 如字面 (string literal) 帶入,而非以 1 / 0 或其它字元帶入)。
- 選擇性參數 : 是否需要回傳三碼郵遞區號 (
- formatted_address_embed_postcode
- 若上述
postcode
參數有被指定,則指定此參數以將三碼郵遞區號直接內嵌於 response 之formatted_address
欄位內 (否則,三碼郵遞區號將另以postcode
欄位回傳)。
- 若上述
- key
- <輸出格式>
Response
- Status code: 200 OK
- 表示成功完成您的 request
- 各類別輸出格式如詳如右側範例所示
- HTTP 400 : 您的輸入有錯誤. 回應您
status
欄位為INVALID_REQUEST
與原因。 - HTTP 500 : 並回應您
status
欄位為Internal Server Error
。 - 參見 HTTP Status Code 一節說明本 API 回傳值之一般通則
- 參見 "status" 欄位 一節說明 "status" 欄位的一般性意義
- Status code: 200 OK
[Intersect search] 交集選取
輸出資料範例
{
"html_attribution": [
"台灣圖霸",
"研鼎智能",
"PAPAGO!"
],
"results": [
{
"formatted_address": "",
"geometry": {
"location": {
"lat": 24.345707714285716,
"lng": 120.58818776190476
}
},
"id": "24002291",
"place_id": "VU1FAAQATB5PFA4YJykDDiJLMTNufyR+PR1la0J7KTo2Dl5XCw==",
"name": "大安國小",
"tel": "",
"city": "台中市",
"town": "大安區",
"type": "地點",
"chain": "",
"branch": "",
"cat": "學校",
"kind": "",
"desc": "",
"geo": {}
}
],
"status": "OK"
}
指定座標,查詢交集資料。
- API :
https://api.map8.zone/v2/myplaces/intersectsearch/<輸出格式>?<參數>
- HTTP Method :
- GET
- Synopsis
- <輸出格式>
- 選擇性參數,目前僅支援
json
。本版本不理會此參數,response 一律以 JSON 格式回應。
- 選擇性參數,目前僅支援
- <參數>
- key
- 必要參數,請帶進您的 key。
- location
- 為必要參數, 為欲判斷是否落於面圖徵的座標點, 格式為 <緯度>,<經度>。
- collection_id
- 選擇性參數,資料集名稱(可不指定,即以所輸入的 key 判斷客戶身份後,帶入其預設資料集名稱)。
- geometry
- 選擇性參數,指定輸出的資料中是否要加入圖形幾何資料(格式為 GeoJSON,可供您直接繪製於地圖)。(
true
/false
; 預設為false
; 請注意true
/false
值以 如字面 (string literal) 帶入,而非以 1 / 0 或其它字元帶入)
- 選擇性參數,指定輸出的資料中是否要加入圖形幾何資料(格式為 GeoJSON,可供您直接繪製於地圖)。(
- key
- <輸出格式>
- Response
- Status code: 200 OK
- 表示成功完成您的 request
- 各類別輸出格式如詳如右側範例所示
- HTTP 400 : 您的輸入有錯誤. 回應您
status
欄位為INVALID_REQUEST
與原因。 - HTTP 500 : 並回應您
status
欄位為Internal Server Error
。 - 參見 HTTP Status Code 一節說明本 API 回傳值之一般通則
- 參見 "status" 欄位 一節說明 "status" 欄位的一般性意義
- Status code: 200 OK
台灣圖霸感謝您的支持與愛護!
有任何疑問,或是指教,都非常歡迎您找我們詢問。
非常感謝!
https://map8.zone
HTTP Status Code
以上 API,可能回傳的 HTTP status code 如后 :
Error Code | 意義 |
---|---|
400 | Bad Request -- 表示您的 requset 解析有誤。通常是給入的參數多了或少了,或是格式有錯誤,或必要參數卻沒給,等等 |
401 | Unauthorized -- 表示您未給定您的 key,或是您給的 key 並非有效。請跟我們聯絡 |
503 | Service Unavailable -- 表示您的 request 已經超出與我們約定的 QoS (服務品質) 等級。通常過一會兒 (QoS 上限解除) 再重發一次即可成功。如果持續發生,請跟我們聯絡 |
"status" 欄位
以上 API,可能回傳之 status
欄位的意義為 :
status 值 |
意義 |
---|---|
OK |
無發生任何錯誤;該地點被成功偵測,並且至少回傳一則結果 |
ZERO_RESULTS |
表示搜尋雖然完成,但未得到任何有效結果。此狀況譬如可能發生在您對本 API 發出的 request 所給定的中心座標在一個偏遠地區 |
OVER_QUERY_LIMIT |
表示您已經超出您的配額。請跟我們聯絡 |
REQUEST_DENIED |
表示您的 request 無法進行;一般來說是您未給定您的 key,或是您給的 key 並非有效。請跟我們聯絡 |
INVALID_REQUEST |
表示您的 requset 解析有誤。通常是給入的參數多了或少了,或是格式有錯誤,或必要參數卻沒給,等等 |
UNKNOWN_ERROR |
表示是我們的伺服器端的錯誤;再重試一次可能就會成功。如果持續發生此問題,請跟我們聯絡 |