Vue3 - 在網頁上嵌入Google Map及設置圖釘的兩種方法

更新 發佈閱讀 7 分鐘

前言

最近在開發個人作品,剛好想要實現在網頁中放入Google Map及設置圖釘,所以花了一些時間查詢、研究,發現其實有很多的方法或套件都可以實現這個功能!這邊將會紀錄兩種做法及其優缺點,分別為使用 iframe 及使用套件vue3-google-map


一、 iframe

使用iframe應該是最簡單又快速的作法,iframe是HTML的內聯框架元素,它可以將另一個HTML頁面嵌入至當前網頁。

取得方式:

  1. 打開Google Map搜尋你想要的地點﹙以下使用關渡大橋舉例﹚
  2. 點擊分享 → 嵌入地圖 → 複製HTML



取得相關的HTML以後,我們就可以使用啦

<template>
<iframe 
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d5108.605898615278!2d121.45593008805143!3d25.124536107237553!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442af64b3a34a59%3A0x19f77dbe72e65285!2z6Zec5rih5aSn5qmL!5e0!3m2!1szh-TW!2stw!4v1709119611724!5m2!1szh-TW!2stw"   
width="600"
height="450"
style="border:0;"
allowfullscreen=""
loading="lazy"   
referrerpolicy="no-referrer-when-downgrade">
</iframe>
</template>


在這邊可以看到它有很多的屬性,我們可以再依需求去調整

  • src:要嵌入的網頁URL
  • width:顯示寬度﹙預設為px﹚
  • height:顯示高度﹙預設為px﹚
  • style:CSS樣式設計
  • allowfullscreen:是否啟動全螢幕模式﹙可視性會因瀏覽器或設備而異﹚
  • loading:是否應該在頁面加載時立即加載﹙eager﹚,或者僅在需要時加載﹙lazy﹚
  • referrerpolicy:控制瀏覽器發送的引薦信息﹙即告訴被嵌入內容是從哪個網頁中載入的﹚


優點:快速、方便、簡單

缺點:同一開始所提,<iframe>是將另一個HTML頁面嵌入至當前網頁操作,所以對網頁效能、維護性、資安並非很有利


二、 vue3-google-map

在官方文件有提到,若要使用此套件,我們要先取得Google Map API 金鑰。大家可以依這裡的說明走,首先要建立Google Cloud 專案並設定信用卡資訊才可以開始使用相關API並取得金鑰,這邊就不贅述詳細流程了。

取得金鑰流程

取得金鑰流程


在我們取的金鑰後,就可以開始進入重頭戲!

第一步:安裝套件

npm install vue3-google-map


第二步:寫入相關程式﹙以下使用Options API寫法﹚

<template>
<!-- 地圖 -->   
<GoogleMap 
api-key="YOUR_GOOGLE_MAPS_API_KEY" 
style="width: 100%; height: 500px" 
:center="center" 
:zoom="15"  > 
<!-- 圖釘 --> 
<Marker :options="markerOptions"></Marker> 
</GoogleMap>
</template>
<script>  
// 將Google Map 與 圖釘引入 ​
import { GoogleMap, Marker } from 'vue3-google-map'; 

export default {   
components: { GoogleMap, Marker },   
data() {     
return {       
center: {
// lat:緯度, lng:經度​
lat: 25.12662, lng: 121.45747
},       
markerOptions: {     
position: {
lat: 25.12662, lng: 121.45747 },       
},     
}  
}, 
};
</script>
  • 金鑰不建議直接寫在template上,可先寫到.env檔後再使用環境變數帶入


基本上,這樣寫完就可以簡單呈現Google Map與地點圖釘了。

在這邊也簡單說明一下相關屬性及設定:

  1. center:地圖中心的經緯度
  2. zoom:地圖初始縮放比例
  3. markerOptions:圖釘相關設置﹙Google文件
  4. mapOptions:地圖相關設置﹙Google文件


當然,vue3-google-map針對地圖還有其他的設定,若大家有需要還可以繼續再深入研究,但必須搭配Google文件一起閱讀才會比較清楚相關的內容。


優點:更高的靈活性、更多可以客製化的功能

缺點:需對Vue有了解,若需要比較複雜的設定會花比較多時間研究,除了官方文件,還需要搭配Google文件一起閱讀才會比較清楚


以上,就是我這一次的學習紀錄,Bye!


※ 參考文件

  1. iframe
  2. vue3-google-map
留言
avatar-img
Moreene的學習筆記
3會員
1內容數
這邊將會記錄我學習程式的相關內容
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
這次要講的是 $route 及 $router 的區別,看似相似的兩個東西,其實應用時機也大不相同,以下以簡單的幾個例子舉例。
Thumbnail
這次要講的是 $route 及 $router 的區別,看似相似的兩個東西,其實應用時機也大不相同,以下以簡單的幾個例子舉例。
Thumbnail
Vue.js是一種基於MVVM的前端JavaScript框架,類似的框架有React、Angular等。 架設環境 安裝Visual Studio Code(https://code.visualstudio.com/) 安裝Node.js(https://nodejs.org/en/
Thumbnail
Vue.js是一種基於MVVM的前端JavaScript框架,類似的框架有React、Angular等。 架設環境 安裝Visual Studio Code(https://code.visualstudio.com/) 安裝Node.js(https://nodejs.org/en/
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News