Google Static Maps API 可讓您在不需要使用 JavaScript 或任何動態頁面載入功能的情況下,將「Google 地圖」影像內嵌在您的網頁。Google Static Maps API 服務會根據透過標準 HTTP 要求傳送的 URL 參數來建立您的地圖,並以可以在網頁上顯示之影像的形式傳回地圖。
注意:Google Static Maps API 的使用限制已經變更。建立 API 金鑰並將它包括在您的要求中,可讓您在 Google API Console 中追蹤使用量,以及視需要購買額外配額。
此文件提供 Google Static Maps API v2 的詳細資料。如果要更新您的 v1 URL,請參考升級指南。
快速範例
下列範例包含紐約市市區之 Google Static Maps API 影像的 URL,顯示如下:
https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap &markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318 &markers=color:red%7Clabel:C%7C40.718217,-73.998284 &key=YOUR_API_KEY
請注意,您不需要透過任何「特殊」的方式來讓這個影像在頁面上顯示。不需要使用 JavaScript。我們只需要建立 URL,並將它放置在 <img> 標籤內。您可以將 Google Google Static Maps API 放置在網頁上可以放置影像的任何位置。
目標對象
本文件的適用對象是,想要在網頁或行動裝置應用程式內包括 Google Static Maps API 影像的網站與行動應用程式開發人員。它提供使用 API 的簡介和可用參數的參考資料。
總覽
Google Static Maps API 會傳回影像(可以是 GIF、PNG 或 JPEG),做為對透過 URL 傳送之 HTTP 要求的回應。針對每個要求,您可以指定地圖位置、影像大小、縮放層級、地圖類型,以及在地圖上的位置放置選擇性標記。您可以進一步使用英數字元為您的標記新增標籤。
Google Static Maps API 影像已內嵌於 <img> 標籤的 src 屬性內,或是於其他程式設計語言中與其相當的屬性內。如果 Google Static Maps API 影像被用於 Web 應用程式(例如瀏覽器)之外,則必須包含一個指向網頁瀏覽器或原生「Google 地圖」應用程式中之顯示位置的連結。(Google Maps APIs Premium Plan 使用者已放棄此需求)。請參考 Google 地圖/Google 地球之服務條款的第 10.1.1(h) 節,以取得與此需求有關的完整與最新語言。
此文件說明 Google Static Maps API URL 和可用參數的必要格式。它也提供一些指定 URL 的祕訣與技巧。
URL 參數
Google Static Maps API URL 必須是下列格式:
https://maps.googleapis.com/maps/api/staticmap?parameters
如果您的網站是透過 HTTPS 存取,您也必須經由 HTTPS 載入 Google Static Maps API 影像,以避免瀏覽器安全性警示。如果您的要求包括敏感使用者資訊(例如使用者的位置),也建議使用 HTTPS。
https://maps.googleapis.com/maps/api/staticmap?parameters
無論是使用 HTTP 或 HTTPS,特定 URL 參數是必要的,而某些則是選擇性。根據 URL 標準,所有參數都使用 & 字元來分隔。參數清單與其可能值列舉如下。
重要:下方針對 URL 參數的討論,為了使說明能夠明確易懂,將針對範例提供其預先逸出的格式。在將任何要求傳送至 API 之前,應該對它的參數進行正確的 URL 編碼。例如,有許多參數都使用縱線字元 (|) 做為分隔符號,而這種符號在最終的 URL 中應該編碼為 %7C,如本文件一開始的快速範例中所示。如需詳細資訊,請參閱建置有效的 URL。
Google Static Maps API 使用下列 URL 參數來定義地圖影像:
位置參數
center(在沒有標記的情況下為「必要」)會定義地圖中心,與地圖所有邊緣的距離都相同。此參數可接受能識別地球表面上唯一位置,格式為以逗號分隔之 {latitude,longitude} 組合(例如「40.714728,-73.998672」)或是字串地址(例如「city hall, new york, ny」)的位置。如需詳細資訊,請參閱下方的位置。zoom(在標記不存在的情況下為「必要」)定義地圖的縮放層級,這能決定地圖放大的層級。此參數可接受與所需地區之縮放層級相對應的數值。如需詳細資訊,請參閱下方的縮放層級。
地圖參數
size(「必要」)定義地圖影像的矩形維度。這個參數可接受{horizontal_value}x{vertical_value}格式的字串。例如,500x400將定義一個寬度為 500 像素、高度為 400 像素的地圖。寬度小於 180 像素的地圖將會顯示縮小的 Google 標誌。這個參數受到scale參數的影響(於下方描述);最終輸出大小是 size 與 scale 值的乘積。scale(「選擇性」)會影響傳回的像素數目。scale=2所傳回的像素為scale=1的兩倍,但會維持相同的涵蓋區域和細節層級(換句話說,地圖的內容沒有變更)。這對於開發高解析度顯示,或是產生以列印為目的之地圖而言相當實用。預設值為1。可接受的值為2與4(4僅供 Google Maps APIs Premium Plan 客戶使用)。如需詳細資訊,請參閱 Scale 值。format(「選擇性」)定義結果影像的格式。根據預設,Google Static Maps API 會建立 PNG 影像。有數種可能的格式,包括 GIF、JPEG 與 PNG 類型。您使用的格式,取決於您想要呈現該影像的方式。JPEG 通常能提供較高的壓縮率,而 GIF 和 PNG 則提供較佳的細緻度。如需詳細資訊,請參閱影像格式。maptype(「選擇性」)定義要建構之地圖的類型。有數種可能的 maptype 值,包括roadmap、satellite、hybrid與terrain。如需詳細資訊,請參閱下方的 Google Static Maps API Maptypes。language(「選擇性」)定義用於顯示地圖方塊標籤的語言。請注意,只有某些國家/地區的地圖方塊才支援此參數,如地圖方塊集不支援要求的特定語言,將會使用該地圖方塊集預設語言。region(「選擇性」)會根據地緣政治敏感度,定義要顯示的適當邊界。接受以兩個字元的 ccTLD (「頂層地區」)值方式所指定的地區代碼。
特徵參數
markers(「選擇性」)定義一或多個要在指定位置附加至影像的標記。這個參數可接受單一標記定義,其參數以縱線字元(|)分隔。同一個markers參數內可以放置多個展示相同樣式的標記;您也可以透過新增其他markers參數,以新增其他展示不同樣式的標記。請注意,如果您為地圖提供標記,便不需要指定(通常需要指定)center與zoom參數。如需詳細資訊,請參閱下方的 Google Static Maps API 標記。path(「選擇性」)定義兩個或更多連結點的單一路徑,以疊加在指定位置的影像上。這個參數可接受以縱線字元 (|) 分隔的點定義字串。您可以透過新增其他path參數以提供其他路徑。請注意,如果您為地圖提供路徑,便不需要指定(通常需要指定)center與zoom參數。如需詳細資訊,請參閱下方的 Google Static Maps API 路徑。visible(「選擇性」)指定必須在地圖上保持可見的一個或更多 位置,不過這並不會顯示標記或其他指標。使用這個參數可確保特定特徵或地圖位置會在 Google Static Maps API 上顯示。style(「選擇性」)定義自訂樣式以改變地圖上特定特徵(道路、公園與其他特徵)的呈現方式。本參數接受識別設定樣式之特徵的feature與element引數,以及要應用至選定特徵的樣式操作集。您可以透過新增其他style參數來提供多個樣式。如需詳細資訊,請參閱樣式化地圖指南。
金鑰與簽章參數
key(「必要」)可讓您在 Google API Console 中監視應用程式的 API 使用狀況、提供充足的免費每日配額,以及確保 Google 可以視需要就您的應用程式相關問題與您聯絡。如需詳細資訊,請參閱取得金鑰與簽章。signature(建議)是一個數位簽章,它是用來驗證使用您的 API 金鑰產生要求的所有網站,是否擁有正確的授權。注意:如果您啟用計費,「數位簽章是必要項目」。如果您超出地圖載入數的免費每日限制,當日剩餘的額外地圖載入數將會列入計費。沒包含數位簽章的計費地圖載入將會失敗。如需詳細資訊,請參閱取得金鑰與簽章。
注意:Google Maps APIs Premium Plan 客戶可能以在 靜態地圖 要求中使用 API 金鑰與數位簽章,或是有效的用戶端編號與數位簽章。如需詳細資訊,請參閱 Premium Plan 客戶的驗證參數。
擁有「舊版」Google Maps APIs for Work 授權的客戶,必須在要求中包含有效的 client 與 signature 參數,而非 key。如需詳細資訊,請參閱《取得金鑰與簽章》頁面的用戶端 ID 與簽章一節。
URL 大小限制
Google Static Maps API 網址有 8192 個字元的大小限制。您在實際操作時應該不需要用到超過此限制的 URL,除非您會產生擁有大量標記與路徑的複雜地圖。不過,請注意特定字元在傳送至 API 之前,可能會因為瀏覽器和/或服務所執行的 URL 編碼動作,導致產生較多的字元。如需詳細資訊,請參閱建置有效的 URL。
參數用法
Google Static Maps API 相對來說較易於使用,因為它只包含一個參數化的 URL。本節將解釋如何使用這些參數來建構您的 URL。
指定位置
Google Static Maps API 必須要能準確地識別地圖上的位置,以同時將焦點放在地圖上正確的位置(透過 center 參數)和/或在地圖上的位置放置任何選用的地點標記(透過 markers 參數)。Google Static Maps API 使用數字(緯度與經度值)或字串(地址)來指定這些位置。這些值能夠識別一個「地理編碼」的位置。
有數個參數(例如 markers 與 path 標記)可接受多個位置。在這些情況下,位置將以縱線字元 (|) 分隔。
緯度與經度
緯度與經度是以使用逗號分隔之文字字串內的數字(準確度為小數點後 6 位數)來定義。例如,「40.714728,-73.998672」就是一個有效的地理編碼值。位於小數點後 6 位數之後的準確度值將被忽略。
經度值是根據它們與定義本初子午線的英國格林威治之間的距離。由於格林威治位於緯度 51.477222 的位置,因此我們可以透過輸入 51.477222,0 的 center 值,以將地圖置中於格林威治:
緯度與經度值必須對應到地球表面上的有效位置。緯度值可以介於 -90 到 90 之間,而經度值可以介於 -180 到 180 之間。如果您指定無效的緯度或經度值,您的要求將被視為無效要求而被拒絕。
地址
由於大多數的人都無法判讀緯度與經度,因此他們會使用「地址」來表示位置。將地址轉換為地理位置的程序稱為「地理編碼」,而 Google Static Maps API 服務可以為您所提供的有效地址進行地理編碼。
針對任何可以提供緯度/經度的參數,您可以改為指定一個表示「地址」的字串。Google 將會對該地址進行地理編碼,並向 Google Static Maps API 服務提供緯度/經度值,以用來放置標記或指定位置。字串應該進行 URL 逸出,例如像是「City Hall, New York, NY」的地址,應該要轉換為「City+Hall,New+York,NY」。
請注意,地址可能會反映出準確的位置(例如街道地址)、折線(例如具名路線),或是多邊形區域(例如城市、國家/地區或國家公園)。針對折線與多邊形的結果,Google Static Maps API 伺服器將會使用該線條/區域的中心點做為地址中心。如果您對於地址進行地理編碼的方式有疑問,可以使用這個地理編碼公用程式來測試該地址。
下列範例將為加州柏克萊產生一個 Google Static Maps API:
https://maps.googleapis.com/maps/api/staticmap?center=Berkeley,CA&zoom=14&size=400x400&key=YOUR_API_KEY
縮放層級
「Google 地圖」上的地圖都有整數的「縮放層級」,它定義目前檢視的解析度。介於 0 (最低縮放層級,整個世界都會顯示在地圖上)與 21+ (放大至街道與個別建築物)的縮放層級都可以在預設的 roadmap 檢視中顯示。建築物的輪廓,在可用的情形下將會以約為 17 的縮放層級顯示在地圖上。這個值會視區域而異,也會因應數據的進化而隨時間改變。
「Google 地圖」將縮放層級 0 設定為能夠涵蓋整個地球。之後的每一個縮放層級,都會將水平與垂直維度的準確度提升兩倍。如需更多有關此工作是如何完成的資訊,請參閱 Google Maps JavaScript API 文件。
注意:地球上並非所有位置都可以使用所有的縮放層級。由於地球上個別位置的資料細微度不同,因此縮放層級將會視位置而異。
如果您傳送了一個沒有可用地圖方塊之縮放層級的要求,Google Static Maps API 將會傳回一個顯示該位置最大縮放層級的地圖。
下列清單顯示每個縮放層級預期看到的約略詳細程度:
- 1:全世界
- 5:地塊/大陸
- 10:城市
- 15:街道
- 20:建築物
下列範例要求兩個具有相同 center 值的曼哈頓地圖,但個別的縮放層級則為 12 與 14:
https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&key=YOUR_API_KEY https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=14&size=400x400&key=YOUR_API_KEY
影像大小
搭配 center 使用的 size 參數,定義地圖的涵蓋區域。當它透過 scale 值(預設為 1)倍增後,也能定義地圖的輸出大小(以像素為單位)。
下列表格顯示 size 參數於每個 scale 值的最大允許值。
| API | scale=1 |
scale=2 |
scale=4 |
|---|---|---|---|
| 免費 | 640x640 |
640x640 (傳回 1280x1280 像素) |
無法使用。 |
| Google Maps APIs Premium Plan | 2048x2048 |
1024x1024 (傳回 2048x2048 像素) |
512x512 (傳回 2048x2048 像素) |
下列範例要求位於赤道的縮放層級 1 地球片段:
https://maps.googleapis.com/maps/api/staticmap?center=0,0&zoom=1&size=400x50&key=YOUR_API_KEY
下列範例要求位於相同區域,大小為 100 x 100 像素的小型地圖。請注意到較小的 Google 標誌:
https://maps.googleapis.com/maps/api/staticmap?center=0,0&zoom=1&size=100x100&key=YOUR_API_KEY
Scale 值
Google Static Maps API 的 size 參數以像素為單位定義地圖的大小,因此 size=200x200 的地圖將會以 200 像素乘以 200 像素的形式傳回。在一個每英寸像素 (ppi) 值大約為 100 的 LCD 電腦螢幕上,一個 200x200 地圖的每一維度皆大約為 2 英寸。
不過,有越來越多的行動裝置包含了像素密度超過 300ppi 的高解析度螢幕,這將會:
- 使 200x200 像素影像的大小降低至 0.7 英寸,並造成標籤與圖示太小而無法辨識;或是
- 對影像做出縮放(放大/縮小)以提升可讀性,並造成模糊或像素化的影像。
| 太小 | 太模糊 |
|---|---|
![]() |
![]() |
針對行動裝置進行開發時,請使用 API 的 scale 參數來傳回可解決上述問題的較高解析度地圖影像。透過將 scale 值乘以 size,便能在不變更地圖的涵蓋區域下,判斷影像的實際輸出大小(以像素為單位)。(預設的 scale 值為 1;可接受的值為 1、2,以及(僅適用於 Google Maps APIs Premium Plan 客戶)4)。
例如,scale 值為 2 時將會傳回與要求相同,且沒有指定 scale 的地圖涵蓋區域,但其每一維度都會擁有兩倍的像素。這也包括道路與標籤,並使它們可以在高解析度、小尺寸螢幕,以及由瀏覽器拓展的情況下也可以判讀。
| 150x150 | 150x150&scale=2 |
|---|---|
![]() |
![]() |
在使用 CSS 設定高度與寬度,並插入 img 或 div 標籤後,這種影像也能在電腦瀏覽器上運作良好。瀏覽器會在不影響品質的情況下,把該影像的大小向下調整至正確的大小。
下列表格顯示三種不同的影像要求。
- 第一個是針對沒有指定 scale 值的 100x100 影像。雖然它能在電腦上正確顯示,對於行動裝置來說卻太小而無法閱讀。
- 第二個將使地圖大小變成兩倍。在桌面上時,CSS 會將它調整至指定的 100x100
img元素,但在向下調整影像大小ˋ的過程中,道路與標籤將會變得太小。雖然該影像的大小對於行動裝置而言是適合的,但道路與標籤卻如上面所述而難以辨識。 - 第三個要求是針對 100x100 且
scale=2的地圖。該映像將以 200px 的詳細資料傳回;電腦能完美地向下調整該映像,使它與原始的 100x100 要求之間毫無差異,而行動裝置瀏覽器則能夠利用由 API 傳回的額外解析度。
| 裝置 | 100x100 |
200x200 |
100x100&scale=2 |
|---|---|---|---|
| 電腦 (在 img 標籤上擁有height="100px" 與width="100px") |
![]() |
![]() |
![]() |
| 高解析度 (模擬) |
![]() |
![]() |
![]() |
祕訣:行動裝置平台(例如 Android 與 iOS)透過針對每一解析度指定個別影像,來使應用程式能夠支援高解析度螢幕。Scale 參數可讓您透過設定 scale=1 與 scale=2,輕鬆地要求兩個相同的地圖影像,一個適用於標準解析度螢幕,另一個則適用於高解析度螢幕。
如需更多針對行動裝置與高解析度螢幕進行開發的資訊,建議您閱讀下列文章:
影像格式
影像能以數種常見的 Web 圖形格式傳回:GIF、JPEG 與 PNG。format 參數可接受下列其中一個值:
png8或png(預設)指定 8 位元 PNG 格式。png32指定 32 位元 PNG 格式。gif指定 GIF 格式。jpg指定 JPEG 壓縮格式。jpg-baseline指定非漸進式 JPEG 壓縮格式。
jpg 與 jpg-baseline 通常能夠提供最小的影像大小,不過這也使它們的壓縮方式較容易「失真」,並有可能降低影像的品質。gif、png8 與 png32 都能提供無損壓縮。
大多數的 JPEG 影像皆為漸進式,這代表它們會預先載入較為粗糙的影像,並隨著資料的增加而提升影像解析度。這能讓影像迅速地在網頁上載入,這也是目前 JPEG 最普遍的用途。不過,某些 JPEG 的用途(特別是在印刷上)需要使用非漸進式(基準式)的影像。在這種情況下,便需要使用非漸進式的 jpg-baseline 格式。
地圖類型
Google Static Maps API 能建立數種格式的地圖,如下所示:
roadmap(預設)指定標準道路圖影像,這是「Google 地圖」網站上通常會顯示的地圖格式。如果沒有指定maptype值,則 Google Static Maps API 預設會提供roadmap地圖方塊。satellite會指定衛星影像。terrain會指定實際地勢圖影像,並顯示地形與植被。hybrid會指定衛星與道路圖影像的整合影像,並會在衛星影像上顯示一層透明的主要街道與地點名稱。
您可以在下列程式碼範例中看見道路圖與地形類型之間的差異。
https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&maptype=roadmap&key=YOUR_API_KEY https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&maptype=terrain&key=YOUR_API_KEY
混合地圖會使用衛星影像與主要道路圖特徵來建立組合地圖。下列範例顯示衛星與混合地圖類型:
https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&maptype=satellite&key=YOUR_API_KEY https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&maptype=hybrid&key=YOUR_API_KEY
樣式化地圖
請參閱樣式化地圖指南。
標記
markers 參數可在一組位置定義一或多個標記的集合。於單一 markers 宣告內定義的每一標記,必須展現相同的視覺樣式;如果要顯示不同樣式的標記,便需要提供多個具有獨立樣式資訊的 markers 參數。
markers 參數可接受下列格式的值指派集合(「標記描述元」):
markers=markerStyles|markerLocation1| markerLocation2|... 等。
「markerStyles」集合是在 markers 宣告的開始位置宣告,並由零或多個樣式描述元(以縱線字元 (|) 分隔)所構成,後面跟隨同樣以縱線字元 (|) 分隔之一或多個位置的集合。
由於樣式資訊與位置資訊都是透過縱線字元分隔,樣式資訊在任何標記描述元中都必須優先出現。一旦 Google Static Maps API 伺服器在標記描述元中遇到一個位置,所有其他標記參數也都會被假設為位置。
標記樣式
標記樣式描述元的集合是一系列以縱線字元 (|) 分隔的值指派。這個樣式描述元定義在此樣式描述元內顯示標記時所使用的視覺屬性。這些樣式描述元包含下列機碼/值指派:
size:(選擇性)從{tiny, mid, small}集合指定標記的大小。如果沒有設定size參數,該標記將會以預設(標準)大小顯示。color:(選擇性)指定一個 24 位元色彩(例如:color=0xFFFFCC)或是一個來自{black, brown, green, purple, yellow, blue, gray, orange, red, white}集合的預先定義色彩。請注意,雖然標記不支援透明度(使用 32 位元十六進位色彩值指定),但是路徑卻支援。
label:(選擇性)指定來自 {A-Z, 0-9} 集合的單一大寫英數字元。(大寫字元的要求為此版本 API 所新增)。請注意,預設與mid大小的標記是唯一能夠顯示alphanumeric-character參數的標記。tiny與small標記無法顯示英數字元。
注意:與其使用這些標記,您可以改為使用您的自訂圖示。(如需詳細資訊,請參閱下方的自訂圖示。)
標記位置
每一個標記描述元都必須包含一個或多個位置的集合,定義要在地圖上放置標記的位置。這些位置可以指定為緯度/經度值,或是指定為地址。這些位置是使用縱線字元 (|) 分隔。
位置的參數會定義標記在地圖上的位置。如果位置位於地圖之外,且假設已提供 center 與 zoom 參數,那麼該標記將不會出現在已建構的影像上。然而,如果沒有提供這些參數,Google Static Maps API 伺服器將會自動建構一個包含所提供標記的影像。(請參閱下方的隱含定位。)
下列顯示範例的標記宣告。請注意,我們定義一個樣式集,以及三個位置:
https://maps.googleapis.com/maps/api/staticmap?center=Williamsburg,Brooklyn,NY&zoom=13&size=400x400& markers=color:blue%7Clabel:S%7C11211%7C11206%7C11222&key=YOUR_API_KEY
如果要定義擁有不同樣式的標記,便必須提供多個 markers 參數。這個 markers 參數集定義了三個標記:一個位於「62.107733, -145.5419」,標籤為「S」的藍色標記、一個位於「Delta Junction, AK」的小型綠色標記,以及一個位於「Tok, AK」,標籤為「C」的中型黃色標記。這些標記將在下列範例中顯示:
https://maps.googleapis.com/maps/api/staticmap?center=63.259591,-144.667969&zoom=6&size=400x400\ &markers=color:blue%7Clabel:S%7C62.107733,-145.541936&markers=size:tiny%7Ccolor:green%7CDelta+Junction,AK\ &markers=size:mid%7Ccolor:0xFFFF00%7Clabel:C%7CTok,AK"&key=YOUR_API_KEY
自訂圖示
與其使用 Google 的標記圖示,您也可以改為使用自己的自訂圖示。自訂圖示透過 markers 參數中的下列描述元來指定:
icon可指定要用來做為標記自訂圖示的 URL。影像可以是 PNG、JPEG 或 GIF 格式,不過我們建議使用 PNG。
icon 參數必須使用 URL 來指定(該 URL 必須完成 URL 編碼)。您可以使用由短網址服務(例如 https://goo.gl)所建立的網址。大部分的短網址服務都有可以自動對 URL 進行編碼的好處。圖示的大小限制為 4096 像素(對於正方形影像來說便是 64x64),而 Google Static Maps API 服務針對每個要求則允許最多五個唯一的自訂圖示。請注意,這些個別的唯一圖示在 Google Static Maps API 內可以多次使用。
自訂圖示錨定點的位置將設定在映像的底部中央。
下列範例使用 Google 的 Chart API 來建立自訂標記,並顯示數間位於紐約市的咖啡廳:
https://maps.googleapis.com/maps/api/staticmap?size=480x480&markers= icon:https://chart.apis.google.com/chart?chst=d_map_pin_icon%26chld=cafe%257C996600%7C 224+West+20th+Street+NY%7C75+9th+Ave+NY%7C700+E+9th+St+NY&key=YOUR_API_KEY
注意:上面範例中的多層級逸出可能會令人感到困惑。Google Chart API 使用縱線字元 (|) 來分隔其 URL 參數內的字串。由於此字元不能在網址內使用(請參閱上面的注意事項),因此在建立完整有效的圖表網址時,縱線字元將逸出為 %7C。現在,結果的網址已內嵌為符合 icon 規格的字串,但它包含一個 % 字元(來自上述的 %7C)。由於這個字元不能直接做為資料包括在網址中,因此必須逸出為 %25。結果便是使 URL 包含 %257C,其本身代表了兩個層級的編碼。同樣地,該 Chart URL 包含了一個 &,由於這個字元會和 Google Static Maps API URL 參數的分隔符號發生混淆,因此無法直接包括在 URL 中,而必須進行編碼。
以下為建立 Google Static Maps API URL 的步驟:
# Intended chld parameter: chld=cafe|996600 # Embedded in a fully valid chart URL: https://chart.apis.google.com/chart?chst=d_map_pin_icon&chld=cafe%7C996600 # Intended icon parameter, containing a fully valid URL: markers=icon:https://chart.apis.google.com/chart?chst=d_map_pin_icon&chld=cafe%7C996600 # Embedded in a valid and unambiguous Google Static Maps API URL: ...&markers=icon:https://chart.apis.google.com/chart?chst=d_map_pin_icon%26chld=cafe%257C996600
Google Static Maps API 路徑
path 參數定義一或多個由路徑連接之位置的集合,以疊加至地圖影像上。path 參數可接受下列格式的數值指派集合(「路徑描述元」):
path=pathStyles|pathLocation1|pathLocation2|... 等。
請注意,兩個路徑點都是使用縱線字元 (|) 彼此分隔。由於樣式資訊與點資訊都是透過縱線字元分隔,因此樣式資訊在任何路徑描述元中都必須優先出現。一旦 Google Static Maps API 伺服器在路徑描述元中遭遇到一個位置,所有其他路徑參數也都會被假設為位置。
路徑樣式
路徑樣式描述元的集合是一系列以縱線字元 (|) 分隔的數值指派。這個樣式描述元定義顯示路徑時所使用的視覺屬性。這些樣式描述元包含下列機碼/值指派:
weight:(選擇性)使用像素指定路徑的粗細。如果沒有設定weight參數,該路徑將會以預設粗細顯示(5 個像素)。color:(選用)指定一個 24 位元色彩(例如:color=0xFFFFCC)或 32 位元十六進位值色彩(例如:color=0xFFFFCCFF),或是一個來自{black, brown, green, purple, yellow, blue, gray, orange, red, white}集合的色彩。指定 32 位元十六進位值時,最後的兩個字元為指定 8 位元 Alpha 透明度ˋˋ值。這個值介於
00(完全透明) 到FF(完全不透明)之間。請注意,雖然路徑支援透明度,但標記並不支援。fillcolor:(選擇性)能同時指出路徑環繞一個多邊形區域,並指定該區域內疊加層所使用的填滿色彩。以下的位置集合並不需要是「封閉」的迴圈,因為 Google Static Maps API 伺服器會自動連接第一個點與最後一個點。不過,請注意任何位於填滿區域外圍的筆觸將不會被納入迴圈內,除非您特別提供相同的開始與結束位置。geodesic:(選擇性)指出要求的路徑必須解譯為符合地球弧度的測地線條。如果是「false」,則該路徑將會被轉譯為螢幕空間的直線。預設為「false」。
下列為一些路徑定義的範例:
- 細藍色線條,50% 不透明度:
path=color:0x0000ff80|weight:1 - 純色紅色線條:
path=color:0xff0000ff|weight:5 - 純色粗白色線條:
path=color:0xffffffff|weight:10
路徑樣式是選擇性。如果您要使用預設屬性,便可以略過定義路徑屬性;在那種情況下,路徑描述元的第一個「引數」便會改為包含第一個宣告的點(位置)。
路徑點
如果要繪製路徑,便需要同時向 path 參數傳遞兩個或更多的點。Google Static Maps API 將會以指定的順序,沿著那些點將路徑連接起來。每個「pathPoint」都在「pathDescriptor」中描述,並以 | (縱線)字元分隔。
下列範例定義一條從紐約市聯合廣場到紐約市時代廣場,具有預設 50% 不透明度的藍色路徑。
path 參數的細節如下所示:
path=color:0x0000ff|weight:5|40.737102,-73.990318|40.749825,-73.987963|40.752946,-73.987384|40.755823,-73.986397
下列範例定義一條相同的路徑,但卻是擁有 100% 不透明度的純色紅色線條:
這個 path 參數的細節如下所示:
path=color:0xff0000ff|weight:5|40.737102,-73.990318|40.749825,-73.987963|40.752946,-73.987384|40.755823,-73.986397
下列範例定義一個位於曼哈頓的多邊形區域,並傳遞一系列的十字路口做為位置:
這個 path 參數的細節如下所示:
path=color:0x00000000|weight:5|fillcolor:0xFFFF0033|8th+Avenue+%26+34th+St,New+York,NY|\ 8th+Avenue+%26+42nd+St,New+York,NY|Park+Ave+%26+42nd+St,New+York,NY,NY|\ Park+Ave+%26+34th+St,New+York,NY,NY
請注意,我們將路徑本身設定為不可見,並使多邊形區域具有 15% 的不透明度。
編碼折線
與其使用一系列的位置,您可以在 path 的位置宣告內使用 enc: 前置詞,將路徑宣告為編碼折線。請注意,如果您為地圖提供編碼折線路徑,便不需要指定(通常需要指定) center 與 zoom 參數。
下列範例使用編碼折線繪製從英屬哥倫比亞省道森河市到阿拉斯加州德爾塔章克申的阿拉斯加公路路線輪廓:
https://maps.googleapis.com/maps/api/staticmap?size=400x400&path=weight:3%7Ccolor:orange%7Cenc:polyline_data&key=YOUR_API_KEY
編碼折線路徑與標準路競相同,可以在傳遞 fillcolor 引數至 path 參數的情況下區分多邊形區域。
下列範例繪製紐約市布魯克林的多邊形區域輪廓:
https://maps.googleapis.com/maps/api/staticmap?size=400x400&path=fillcolor:0xAA000033%7Ccolor:0xFFFFFF00%7C enc:encoded_data&key=YOUR_API_KEY
檢視點
影像可以透過使用 visible 參數指定可見位置,以指定「檢視點」。visible 參數會指示 Google Static Maps API 服務建構一個使現有位置維持可見的地圖。(這個參數可以與現有標記或路徑搭配使用,以同時定義一個可見地區)。以這種方式定義的檢視點將能夠排除指定確切縮放層級的需求。
下列範例要求一個以馬薩諸塞州波士頓為中心的地圖,並同時包含位於馬薩諸塞州劍橋的麻省理工學院與哈佛廣場:
https://maps.googleapis.com/maps/api/staticmap?center=Boston,MA &visible=77+Massachusetts+Ave,Cambridge,MA%7CHarvard+Square,Cambridge,MA&size=512x512&key=YOUR_API_KEY
地圖的隱含定位
通常您必須指定 center 與 zoom URL 參數,以定義您所產生之地圖的位置與縮放層級。然而,如果您提供 marker、path 或 visible 參數,便可以改為讓 Google Static Maps API 透過評估這些元素的位置,以隱含的方式判斷正確的中心位置與縮放層級。
透過提供兩個或更多的元素,Google Static Maps API 將能夠判斷適當的中心與縮放層級,並針對包含的元素提供寬廣的邊界。下列範例顯示包含加州的舊金山、奧克蘭,以及聖荷西的地圖:
https://maps.googleapis.com/maps/api/staticmap?size=512x512&maptype=roadmap\ &markers=size:mid%7Ccolor:red%7CSan+Francisco,CA%7COakland,CA%7CSan+Jose,CA&key=YOUR_API_KEY
疑難排解與支援
如需使用 Google Static Maps API 的詳細資訊,請參閱支援頁面。
Google Static Maps API 可能會在發生問題時發出錯誤或警告。您應該特別在發現地圖上有項目遺失時檢查是否有警告。在推出新的應用程式之前檢查是否有警告,也是一個良好的做法。請注意,由於警告是顯示在 HTTP 標頭中,因此可能不會立即出現。如需詳細資訊,請參閱錯誤和警告指南。
Google Static Maps API 先前要求您包括 sensor 參數,以指出您的應用程式是否使用感應器來判斷使用者的位置。現在已不再需要此參數。








