最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue實現(xiàn)大屏獲取當(dāng)前所處城市及當(dāng)?shù)靥鞖獾木唧w方案

 更新時間:2026年02月10日 08:42:37   作者:李劍一  
文章介紹了如何在大屏項目中展示城市名稱和實時天氣信息,通過瀏覽器的GeolocationAPI獲取經(jīng)緯度,然后使用逆地理編碼服務(wù)獲取城市名稱,文章還提到了使用Open-Meteo獲取天氣信息,該服務(wù)免費且支持全球經(jīng)緯度的實時天氣和未來7天預(yù)報,需要的朋友可以參考下

之前做過的大屏項目一般是在內(nèi)網(wǎng)環(huán)境中使用,所以一般頂部不牽扯展示城市和天氣。但是這次做的是放在外網(wǎng)的,所以簡單實現(xiàn)一下展示城市名稱和當(dāng)前實時天氣信息。

獲取當(dāng)前所處位置

獲取當(dāng)前定位可以通過瀏覽器原生的Geolocation API獲取經(jīng)緯度信息。

function getLocation() {
	return new Promise((resolve, reject) => {
		if (navigator.geolocation) {
			navigator.geolocation.getCurrentPosition(
				(position) => {
					const lat = position.coords.latitude;
					const lon = position.coords.longitude;
					resolve({lat, lon});
					console.log('當(dāng)前位置:', lat, lon);
				},
				(error) => {
					console.error('無法獲取位置:', error.message);
					reject(error);
				}
			);
		}
	})
}

需要注意,Geolocation API是異步的,所以這里用 Promise 進行了簡單的封裝。另外這里只能獲取到經(jīng)緯度,無法獲取到所在城市名稱,需要通過逆地理編碼的方式實現(xiàn)。

逆地理編碼

目前國內(nèi)主要是御三家提供逆地理編碼的服務(wù),但是都需要進行付費,不過唯一可以慶幸的是各家都有免費額度

如果你的大屏部署在外網(wǎng),國外的Nominatim是完全免費的,咱們這邊目前是無法訪問的。官網(wǎng)地址也放一個nominatim.openstreetmap.org

這里我以騰訊的逆地理編碼服務(wù)為例子簡單寫一下:

async function getCityName(lat, lon) {
	const sig = CryptoJs.MD5(`/ws/geocoder/v1/?key=${你的key}&location=${lat},${lon}${你的簽名}`).toString();
	const {result} = await request.get(`/tencent/ws/geocoder/v1/?key=${你的key}&location=${lat},${lon}&sig=${sig}`);
	return `${result.address_component.city}-${result.address_component.district}`
}

這里需要代理一下,我這里的代理如下:

'/tencent': {
    target: 'https://apis.map.qq.com',
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/tencent/, '')
},

獲取天氣

天氣信息目前咱們這邊有和風(fēng)天氣,提供了一定的免費額度。

但是我在網(wǎng)上找到一個外面的,但是咱們這邊能訪問到的Open-Meteo,官方地址也放一下open-meteo.com。

特點如下:

  • 無需注冊、無 API Key、無調(diào)用限制
  • 支持全球經(jīng)緯度實時天氣 + 未來7天預(yù)報
  • 數(shù)據(jù)來源:歐洲中期天氣預(yù)報中心(ECMWF)等權(quán)威機構(gòu)

唯一不好的一點在于返回的都是英文數(shù)據(jù),需要認(rèn)為的轉(zhuǎn)成中文。

// 部分天氣中英文映射
const WEATHER_CODE_MAP = {
	0: { en: 'Clear sky', zh: '晴' },
	1: { en: 'Mainly clear', zh: '晴轉(zhuǎn)多云' },
	2: { en: 'Partly cloudy', zh: '多云' },
	3: { en: 'Overcast', zh: '陰' },
	45: { en: 'Fog', zh: '霧' },
	48: { en: 'Depositing rime fog', zh: '凍霧' },
	51: { en: 'Drizzle: Light', zh: '小雨' },
	53: { en: 'Drizzle: Moderate', zh: '中雨' },
	55: { en: 'Drizzle: Dense', zh: '大雨' },
	61: { en: 'Rain: Slight', zh: '小雨' },
	63: { en: 'Rain: Moderate', zh: '中雨' },
	65: { en: 'Rain: Heavy', zh: '大雨' },
	71: { en: 'Snow fall: Slight', zh: '小雪' },
	73: { en: 'Snow fall: Moderate', zh: '中雪' },
	75: { en: 'Snow fall: Heavy', zh: '大雪' },
	95: { en: 'Thunderstorm', zh: '雷陣雨' },
	96: { en: 'Thunderstorm with slight hail', zh: '雷陣雨伴小冰雹' },
	99: { en: 'Thunderstorm with heavy hail', zh: '雷陣雨伴大冰雹' }
};
// 獲取天氣
async function getWeather(lat, lon) {
	const result = await request.get(`https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lon}&current_weather=true`);
	const code = result.current_weather.weathercode;
	return WEATHER_CODE_MAP[code] || {en: 'Unknown', zh: '未知'};
}

這個是不需要代理的,因為Open-Meteo本身支持CORS。

總結(jié)

獲取經(jīng)緯度和城市信息,以及天氣信息在技術(shù)上沒什么難度。

主要的問題點在于很多東西都是付費的,自己玩玩還好,但要是真的上線正式環(huán)境一定要防備被別人惡意刷爆。

以上就是Vue實現(xiàn)大屏獲取當(dāng)前所處城市及當(dāng)?shù)靥鞖獾木唧w方案的詳細(xì)內(nèi)容,更多關(guān)于Vue大屏獲取當(dāng)前所處城市及天氣的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue3中vue-router安裝配置使用全過程

    vue3中vue-router安裝配置使用全過程

    VueRouter是Vue.js官方的路由管理器,用于實現(xiàn)單頁面應(yīng)用(SPA)的路由功能,這篇文章主要介紹了vue3中vue-router安裝配置使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • 前端Vue3+vant實現(xiàn)OSS上傳圖片全過程

    前端Vue3+vant實現(xiàn)OSS上傳圖片全過程

    這篇文章主要介紹了前端Vue3+vant實現(xiàn)OSS上傳圖片的相關(guān)資料,文中通過示例代碼詳細(xì)說明了上傳文件的總流程,包括可能出現(xiàn)的跨域問題以及如何配置服務(wù)器以解決跨域問題,需要的朋友可以參考下
    2025-05-05
  • vue實現(xiàn)前端拖拽div位置交換的方法詳解

    vue實現(xiàn)前端拖拽div位置交換的方法詳解

    這篇文章主要介紹了如何使用Vue技術(shù)實現(xiàn)一個簡單的備忘錄應(yīng)用,包括添加條目和拖拽條目兩個功能,文章還詳細(xì)解釋了如何使用Vue的draggable屬性和JavaScript獲取同級元素節(jié)點的方法,需要的朋友可以參考下
    2025-01-01
  • vue中el表單的簡單查詢方法

    vue中el表單的簡單查詢方法

    本文主要介紹了vue中el表單的簡單查詢方法,主要包括表單頁面根據(jù)groupid 、type 、errortype進行數(shù)據(jù)過濾,感興趣的可以了解一下
    2023-10-10
  • vue生成token保存在客戶端localStorage中的方法

    vue生成token保存在客戶端localStorage中的方法

    本篇文章主要介紹了vue生成token保存在客戶端localStorage中的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • vue路由懶加載工作原理

    vue路由懶加載工作原理

    Vue路由懶加載是一種優(yōu)化技術(shù),旨在減少應(yīng)用程序的初始加載時間并提高性能,這篇文章給大家介紹vue路由懶加載的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • VUE中v-on:click事件中獲取當(dāng)前dom元素的代碼

    VUE中v-on:click事件中獲取當(dāng)前dom元素的代碼

    這篇文章主要介紹了VUE中v-on:click事件中獲取當(dāng)前dom元素的代碼,文中同時給大家提到了v-on:click獲取當(dāng)前事件對象元素的方法,需要的朋友可以參考下
    2018-08-08
  • vue?+?electron應(yīng)用文件讀寫操作

    vue?+?electron應(yīng)用文件讀寫操作

    這篇文章主要介紹了vue?+?electron應(yīng)用文件讀寫操作,如果要制作的應(yīng)用并不復(fù)雜,完全可以將數(shù)據(jù)存儲在本地文件當(dāng)中,然后應(yīng)用就可以通過這些文件進行數(shù)據(jù)的讀寫,需要的朋友參考下吧
    2022-06-06
  • vue引用json文件的方法小結(jié)

    vue引用json文件的方法小結(jié)

    這篇文章主要介紹了vue引用json文件,解決怎么從控制臺把數(shù)據(jù)移到j(luò)son文件中,只需要直接右擊復(fù)制值即可,需要的朋友可以參考下
    2022-09-09
  • 解決vuecli3中img src 的引入問題

    解決vuecli3中img src 的引入問題

    這篇文章主要介紹了解決vuecli3中img src 的引入問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

客服| 昌邑市| 衡水市| 聂拉木县| 无锡市| 金阳县| 长沙县| 平邑县| 天镇县| 江油市| 汽车| 正阳县| 焉耆| 名山县| 平乡县| 临沂市| 遵义市| 武邑县| 老河口市| 专栏| 获嘉县| 阿拉尔市| 广饶县| 嘉峪关市| 禹城市| 鲁山县| 北流市| 遂宁市| 曲水县| 板桥市| 宁乡县| 枣阳市| 即墨市| 天峨县| 宁乡县| 永城市| 监利县| 建宁县| 滨海县| 通辽市| 伊宁市|