前端vue地圖定位并測算當(dāng)前定位離目標(biāo)位置距離可用于簽到打卡


前端vue地圖定位并測算當(dāng)前定位離目標(biāo)位置距離可用于簽到打卡,?下載完整代碼請(qǐng)?jiān)L問uni-app插件市場地址:?https://ext.dcloud.net.cn/plugin?id=12974

效果圖如下:


#

#### 使用方法

```使用方法

<!--

// 騰訊地圖key注冊地址(針對(duì)H5端腿倚,manifest.json中web配置,配置定位與地圖 若是微信小程序只需配置微信小程序權(quán)限配置):

? https://lbs.qq.com/dev/console/application/mine

-->

<!-- scale縮放級(jí)別蚯妇,取值范圍為3-20 longitude:地圖中心精度 latitude:地圖中心緯度 markers:覆蓋物 show-location:是否顯示定位-->

<map class="mapV" :latitude="infoDict.lat"

:longitude="infoDict.lon" scale='6' :markers="covers" show-location=false>

</map>

<!--

? ? ? ? page.json配置以下

// 權(quán)限設(shè)置

"permission": {

"scope.userLocation": {

"desc": "您的位置信息將用于該活動(dòng)簽到"

}

}

-->

```

#### HTML代碼部分

```html

<template>

<view class="content">

<scroll-view class="scrollV" scroll-y="true">

<view class="inputView">

<text class="leftTitle">活動(dòng)內(nèi)容</text>

</view>

<view class="inputView">

{{"去清遠(yuǎn)古龍峽漂流"}}

</view>

<view class="inputView">

<text class="leftTitle">簽到須知</text>

</view>

<view class="inputView">

{{'距離活動(dòng)地10km內(nèi)可簽到成功'}}

</view>

<!--

// 騰訊地圖key注冊地址(針對(duì)H5端敷燎,manifest.json中web配置,配置定位與地圖 若是微信小程序只需配置微信小程序權(quán)限配置):

? https://lbs.qq.com/dev/console/application/mine

-->

<!-- scale縮放級(jí)別箩言,取值范圍為3-20 longitude:地圖中心精度 latitude:地圖中心緯度 markers:覆蓋物 show-location:是否顯示定位-->

<map class="mapV" :latitude="infoDict.lat" :longitude="infoDict.lon" scale='6' :markers="covers"

show-location=false>

</map>

</scroll-view>

<view class="btnview" @tap="goSignIn">{{'簽到' + distanceStr}}</view>

</view>

</template>

```

#### JS代碼 (引入組件 填充數(shù)據(jù))

```javascript

<script>

import Vue from 'vue'

export default {

data() {

return {

// 覆蓋物

covers: [],

// 目標(biāo)經(jīng)緯度信息

infoDict: {

'lon': '113.17',

'lat': '23.8'

},

// 我的定位經(jīng)緯度信息

myPinInfo: {},

// 默認(rèn)距離為負(fù)數(shù)

distance: -9999,

distanceStr: ''

}

},

onShow() {

// 獲取當(dāng)前位置

this.getlocation();

},

methods: {

getlocation() {

let myThis = this;

console.log('獲取位置開始');

uni.getLocation({

type: 'gcj02',

success: function(res) {

myThis.myPinInfo = res;

console.log('當(dāng)前位置的經(jīng)度:' + res.longitude);

console.log('當(dāng)前位置的緯度:' + res.latitude);

myThis.covers = [{

latitude: myThis.infoDict.lat,

longitude: myThis.infoDict.lon,

width: 30,

height: 30,

id: 20000,

iconPath: '../../static/activity_pin.png'

},

{

latitude: myThis.myPinInfo.latitude,

longitude: myThis.myPinInfo.longitude,

width: 30,

height: 30,

id: 20001,

iconPath: '../../static/people_pin.png'

}

];

myThis.distance = myThis.getDistance(myThis.infoDict.lat, myThis.infoDict.lon, myThis

.myPinInfo.latitude, myThis.myPinInfo.longitude)

myThis.distanceStr = '(當(dāng)前距離' + myThis.distance + '米)';

}

});

},

// 計(jì)算兩點(diǎn)距離

getDistance(lat1, lng1, lat2, lng2) {

let EARTH_RADIUS = 6378.137;

let radLat1 = this.rad(lat1);

let radLat2 = this.rad(lat2);

let a = radLat1 - radLat2;

let b = this.rad(lng1) - this.rad(lng2);

let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +

Math.cos(radLat1) * Math.cos(radLat2) *

Math.pow(Math.sin(b / 2), 2)));

s = s * EARTH_RADIUS;

//s = Math.round(s * 10000d) / 10000d;

s = Math.round(s * 10000) / 10000;

s = s * 1000; //乘以1000是換算成米

return s;

},

// 弧度計(jì)算

rad(d) {

return d * Math.PI / 180.0;

},

// 立即簽到

goSignIn(e) {

if (this.distance > 10000) {

uni.showModal({

title: '溫馨提示',

content: '您的當(dāng)前位置距離活動(dòng)目的地太遠(yuǎn), 無法簽到',

showCancel: false

})

return;

} else if (this.distance < 0) {

uni.showModal({

title: '溫馨提示',

content: '您的定位權(quán)限未打開, 請(qǐng)點(diǎn)擊小程序右上角···菜單按鈕, 然后點(diǎn)擊設(shè)置,打開定位權(quán)限',

showCancel: false

})

return

}

},

}

}

</script>

```

#### CSS

```CSS

<style>

.content {

display: flex;

flex-direction: column;

height: 100%;

}

.scrollV {

width: 100vw;

}

.mapV {

width: calc(100vw);

height: 320px;

margin-top: 14px;

}

.leftTitle {

width: 284px;

height: 44px;

line-height: 44px;

font-size: 14px;

color: #333333;

}

.inputView {

flex-direction: row;

display: flex;

height: auto;

align-items: center;

margin-left: 13px;

width: calc(100vw - 30px);

padding: 2px 0px;

font-size: 13px;

color: #666666;

}

.btnview {

display: flex;

background-color: #FF731E;

justify-content: center;

align-items: center;

color: #ffffff;

width: 100%;

height: 50px;

margin-top: 20px;

}

</style>

```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末硬贯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子分扎,更是在濱河造成了極大的恐慌澄成,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畏吓,死亡現(xiàn)場離奇詭異,居然都是意外死亡卫漫,警方通過查閱死者的電腦和手機(jī)菲饼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來列赎,“玉大人宏悦,你說我怎么就攤上這事。” “怎么了饼煞?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵源葫,是天一觀的道長。 經(jīng)常有香客問我砖瞧,道長息堂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任块促,我火速辦了婚禮荣堰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竭翠。我一直安慰自己振坚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布斋扰。 她就那樣靜靜地躺著渡八,像睡著了一般。 火紅的嫁衣襯著肌膚如雪传货。 梳的紋絲不亂的頭發(fā)上屎鳍,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音损离,去河邊找鬼哥艇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛僻澎,可吹牛的內(nèi)容都是我干的貌踏。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼窟勃,長吁一口氣:“原來是場噩夢啊……” “哼祖乳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秉氧,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤眷昆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后汁咏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亚斋,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年攘滩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帅刊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡漂问,死狀恐怖赖瞒,靈堂內(nèi)的尸體忽然破棺而出女揭,到底是詐尸還是另有隱情,我是刑警寧澤栏饮,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布吧兔,位于F島的核電站,受9級(jí)特大地震影響袍嬉,放射性物質(zhì)發(fā)生泄漏境蔼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一冬竟、第九天 我趴在偏房一處隱蔽的房頂上張望欧穴。 院中可真熱鬧,春花似錦泵殴、人聲如沸涮帘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽调缨。三九已至,卻和暖如春吆你,著一層夾襖步出監(jiān)牢的瞬間弦叶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國打工妇多, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伤哺,地道東北人隧熙。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓杆查,卻偏偏與公主長得像盅安,于是被迫代替她去往敵國和親轮听。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容