學習筆記-1 使用Google Maps API在網頁上顯示地圖與搜尋店家名稱

更新於 發佈於 閱讀時間約 11 分鐘

本篇是一個初學轉職工程師撰寫的,內容都是以原生JS無使用框架的方式達到想要達成的目標,如有刺眼之處還請多見諒

由於參與的專案需要使用到地點以及撈取店家資訊,所以使用了Google Maps api地圖資料來處理。

首先,先至Google Cloud Platform(GCP)申請 api key

google提供各式各樣的 api給客戶使用,只要有了這組金鑰就可以使用他們家的api服務,但要注意的是google api不是免費提供的,每個月有200美金的免費額度,後續用完的計價方式可以去GCP上看相關的說明。

有了這組金鑰之後就可以去js上引用了

    <script>    (g => {      var h, a, k, p = "The Google Maps JavaScript API",
        c = "google",        l = "importLibrary",        q = "__ib__",       
m = document,        b = window;      b = b[c] || (b[c] = {});     
var d = b.maps || (b.maps = {}),        r = new Set,       
e = new URLSearchParams,       
u = () => h || (h = new Promise(async (f, n) => {         
await (a = m.createElement("script"));         
e.set("libraries", [...r] + "");         
for (k in g) e.set(k.replace(/[A-Z]/g, t => "_" + t[0].toLowerCase()), g[k]); 
        e.set("callback", c + ".maps." + q);         
a.src = `https://maps.${c}apis.com/maps/api/js?` + e;          d[q] = f; 
        a.onerror = () => h = n(Error(p + " could not load."));         
a.nonce = m.querySelector("script[nonce]")?.nonce || "";       
  m.head.append(a)        }));     
d[l] ? console.warn(p + " only loads once. Ignoring:", g) : d[l] = (f, ...n)
=> r.add(f) && u().then(() => d[l](f, ...n))    })    ({     
key: "YOUR_KEY",      v: "weekly"    }); 
</script>

在YOUR_KEY上填入你申請的金鑰 就可以引入GOOGLEMAP API的內容了。

接下來來做初始化地圖

<div class="container">      
<div id="map"></div>     
</div>
let map;      
let center;
async function initMap() {       
const { Map } = await google.maps.importLibrary("maps");
  center = {         
lat: 25.0374865,         
lng: 121.5647688,       
};       
map = new Map(document.getElementById("map"), {         
center: center,         
zoom: 14,         
mapId: "4504f8b37365c3d0",       
});     
}

initMap();

這個部分就可以把一張沒有任何標記點的地圖呈現在網頁上

center可以改成你想要搜索以及初始化頁面的位置

zoom的數字可以填入1-20 數字愈大,地圖愈細:1是世界地圖,20就會到街道

raw-image

接下來就可以使用input來搜尋想搜尋的店家名稱

<form action="" method="get">          
<input type="text" name="search" />         
<button>送出</button>       
</form>
let input = document.querySelector("input[name=search]");
let search = document.querySelector("form");

因為搜尋會是使用剛剛初始化過的地圖作呈現,所以這邊的話會在剛剛初始化地圖的function內加入

search.addEventListener("submit", (e) => {          
e.preventDefault();         
findPlaces();       
});

之後開始處理findPlaces()搜尋的部分

let markers = [];
async function findPlaces() {       
const { Place } = await google.maps.importLibrary("places");       
const { AdvancedMarkerElement } = await google.maps.importLibrary(         
"marker"        );
markers.forEach((marker) => marker.setMap(null));       
markers = [];       
const request = {         
textQuery: `${input.value}`,         
fields: [           
"displayName",           
"location",           
"formattedAddress",           
"businessStatus",         
],         
locationBias: {            //可以自行設定想要搜尋的中心點,沒有特定點的話這句刪掉就會是該台裝置目前的定位位置           
center: {             
lat: center.lat,             
lng: center.lng,           
},           
radius: 500,         // 預計搜尋的範圍 最大50000(公尺)         
},         
isOpenNow: true,         
language: "zh-tw",         
maxResultCount: 10,    
//預計搜尋的店家數量  至多20         
minRating: 0,          
//預計搜尋的評價星數         
region: "tw",         
useStrictTypeFiltering: true,       
};       
const { places } = await Place.searchByText(request);
if (places.length) {         
console.log(places);
const { LatLngBounds } = await google.maps.importLibrary("core");         
const bounds = new LatLngBounds();
places.forEach((place) => {           
const markerView = new AdvancedMarkerElement({             
map,             
position:
place.location,             
title: place.displayName,           
});           
markers.push(markerView);           
bounds.extend(place.location);         
});map.setCenter(bounds.getCenter());       
} else {         
alert("No results");         
console.log("No results");       
}       
input.value = "";      }


raw-image


以上code所呈現的會如上圖所示,接著在搜尋地點內打想要查閱的地點關鍵字,地圖就會以你所設定的中心點向外搜尋

raw-image

如果想要更精確的搜尋,可以在request內輸入"includedTypes",以便增加搜尋條件,想知道實際有甚麼type可以使用可以上google map api的說明文件上搜尋

avatar-img
1會員
1內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Google地圖對現代商業至關重要,尤其在行動裝置普及的時代,良好的地圖能見度能直接帶動客流。設置商家資料需完整並精確,並利用SEO策略提升排名。分析競爭對手表現有助於制定差異化策略。此外,定期維護和更新商家資訊、管理評論和上傳新圖片,能長期保持商家在地搜尋中的能見度和競爭優勢。
Thumbnail
你有幾個 Google 帳號?Google 提供許多免費的應用程式,包括大家最常使用的地圖、YouTube、 email、日曆、Meet、Gemini、雲端硬碟、翻譯、文件、Google表單…等,如果你還沒有申請過 Google 帳號,請 抽空到此申請,免費體驗各種功能豐富的應用程式。 下圖右邊都
Thumbnail
手機版進入Google表單有三步驟 第一是進入Google瀏覽器, 第二是在瀏覽器上搜尋框,輸入Google表單, 找到,Google表單登錄,的網頁,點按進入即可 接下來就會出現目前的畫面,我們只要點選,前往表單,就可進入正式編輯的頁面了 首次進入表單編輯頁面,我們必須要為表單,訂定一個
Thumbnail
Google Cloud Arcade 是一個免費、以遊戲來學習 Google Cloud 的平台,在這裡您可以透過實作的Labs 來解決主題任務和每週任務,每個月的主題任務和每週任務都會更新,充實掌握雲端技能。
Thumbnail
Google 提供了免費的雲端服務 Google Apps Script (GAS) ,我們可以撰寫一些簡易的程式APP,串接其他 Google 雲端服務 如 Google Docs ,Sheets …,就能夠幫助我們利用雲端硬碟做日常工作
Thumbnail
您有開店嗎? 如果有,本篇文章會一口氣讓您了解什麼是Google地圖廣告? 讓你了解Google廣告到底能幫助您什麼? Google地圖廣告又是如何成為店家們一定要有的武器!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Google地圖對現代商業至關重要,尤其在行動裝置普及的時代,良好的地圖能見度能直接帶動客流。設置商家資料需完整並精確,並利用SEO策略提升排名。分析競爭對手表現有助於制定差異化策略。此外,定期維護和更新商家資訊、管理評論和上傳新圖片,能長期保持商家在地搜尋中的能見度和競爭優勢。
Thumbnail
你有幾個 Google 帳號?Google 提供許多免費的應用程式,包括大家最常使用的地圖、YouTube、 email、日曆、Meet、Gemini、雲端硬碟、翻譯、文件、Google表單…等,如果你還沒有申請過 Google 帳號,請 抽空到此申請,免費體驗各種功能豐富的應用程式。 下圖右邊都
Thumbnail
手機版進入Google表單有三步驟 第一是進入Google瀏覽器, 第二是在瀏覽器上搜尋框,輸入Google表單, 找到,Google表單登錄,的網頁,點按進入即可 接下來就會出現目前的畫面,我們只要點選,前往表單,就可進入正式編輯的頁面了 首次進入表單編輯頁面,我們必須要為表單,訂定一個
Thumbnail
Google Cloud Arcade 是一個免費、以遊戲來學習 Google Cloud 的平台,在這裡您可以透過實作的Labs 來解決主題任務和每週任務,每個月的主題任務和每週任務都會更新,充實掌握雲端技能。
Thumbnail
Google 提供了免費的雲端服務 Google Apps Script (GAS) ,我們可以撰寫一些簡易的程式APP,串接其他 Google 雲端服務 如 Google Docs ,Sheets …,就能夠幫助我們利用雲端硬碟做日常工作
Thumbnail
您有開店嗎? 如果有,本篇文章會一口氣讓您了解什麼是Google地圖廣告? 讓你了解Google廣告到底能幫助您什麼? Google地圖廣告又是如何成為店家們一定要有的武器!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!