Google Map的pb參數

Google Map pb parameters

 

下面整理一些在網路上找到的資訊與比較後我自己的一些觀察,但未必一定正確,因為目前尚未找到比較正式的說明文章。

歡迎大家一起留言討論、指教~


 

.

Google Map分享內嵌地圖時的pb參數

回到目錄清單↑

我之前到「台興茶場」的 賞景路線圖 中標出了三個地點,分別為「武界台興茶園」、「自定義中途點」、「終點」。從上面的embeded code中,可以看到pb參數可能就是用來描述位置、路線的結構,所以在這邊研究、紀錄一下。

呈現的Google Map如下:

 

這張Google Map路線圖的embeded語法為

上面這段Google Map的API(src裡面的連結)只能在<iframe></iframe>的標籤內使用。如果你想要更直接的修改測試,而不想要透過改在網頁中預覽(較為麻煩),可以使用一些 線上的iframe模擬測試工具 較為方便。

 

上面範例的pb參數擷取後如下

在參考了幾篇網路上的文章(stackoverflow(1), stackoverflow(2) Millhouse Group,)後,大致整理如下。


 

資料的表達方式

回到目錄清單↑

pb參數的表達方式,基本上以下面的方式呈現:

![ID][DataType][n]

  • !:資料的分隔符號,位於字串最前面
  • ID:ID編號
  • DataType:資料型態
  • n:數量 (如資料型態「m」下會有多個子項目,n用來描述子項目的數量)

 

資料型態

回到目錄清單↑

  • b: boolean
  • d: double precision floating point
  • e: enum
  • f: single precision floating point
  • i: integer
  • m: matrix
  • s: string
  • u: unsigned int
  • v: timestamp, unix epoch in milliseconds
  • x: hexdecimal(?)
  • z: encoded data or an id or some kind

 

拆解後的資料結構

回到目錄清單↑

接著我們將Google Map中embeded語法中的結構,結構中以「!」作為區隔符號,位於字串的頭部。拆解的方式可以參考以下「m」資料結構的說明,很容易理解。

# 以上面的例子來說,pb中的參數主要包含上圖這幾個區塊。在實驗後,感覺似乎(A)區塊只是提供該地圖的資訊,修改座標並不會造成地圖的移動。下面,我們再來把pb的文字,以我目前的了解在上面新增一些註解。

「m」的資料結構下,一般表示的方法為「xmy」。目前只感覺「x」是有順序性的,但在特殊的階層上,這個x的數字順序是不是有特定的含意或代表則還不太確定。「y」則代表這個matrix下的資料單元數量,而每個父階層的「y」會包其子階層的「xmy」描述xmy」下資料單元數量。因此在將資料由平整的字串拆解為上述的階層結構時,可以透過「my」的「y」來確認拆解的結果是否正確。

以上面第二列的「!1m12」為例,這個「12」分別包含了「!1m3」下的3個項目、「!2m3」下的3個項目、「!3m2」下的2個項目以及「!1m3」、「!2m3」、「!3m2」、「!4f13.1」四個階層項目,所以總共為12。

 

「z」表示後面的字串為編碼後的數值。

在上面第19列的「2z」後面所接的「NTQ25Y2X5oqV57ij5LuB5oSb6YSJ5rOV5rK75p2R6Iy25ZyS5be3MTMtMuiZn-atpueVjOWPsOiIiOiMtuWckg」就是地點名稱。可以隨便從網路上找一個線上的Base64 decoder,將「2z」後的字串貼上去,可以得到結果就是「546南投縣仁愛鄉法治村茶園巷13-2號武界台興茶園」,也就是台興茶園的地址資訊。

而我實驗,如果是美國地點的話,這裡顯示的則是地點的名稱。會以「2s」來做表示,也就是後面直接以字串表示,特殊字元或連接符號則以HTML URL的慣用編碼方式來取代。例如一個地點名稱為「Philz Coffee」的店家,在第19列的位置則會以「!2sPhilz%20Coffee」來表示。其中「%20」為HTML URL編碼方式的「空格」。

順道註記一下第18列的FTID,「1s」後的「0x3468da7bbd7de411%3A0x8791aefed9381e52」也就是「0x3468da7bbd7de411:0x8791aefed9381e52」。FTID是一個地點的唯一識別ID,以上面的地點台興茶園來說,可以從下面的這個連結來驗證它是FTID。

https://google.com/maps?ftid=0x3468da7bbd7de411:0x8791aefed9381e52

 

「e」的資料結構下,一般表示的方法為「xey」。這似乎是google map裏定義好的功能代號,目前觀察到的規則有:

  • !3e2:地圖中有路線
  • !5e0:地圖模式(預設)
  • !5e1:衛星模式

 

 

其他參考連結:

 

 

※※※ 歡迎加入粉絲團 → sya的旅遊部落格 ※※※

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料