vue 怎么通过经纬度来测算公里数?

怎么通过经纬度 测算出公里数然后显示费用 每公里2.5元 求大神帮忙改进改进

<!-- @click="getLocation" -->

<template>

<div>

<baidu-map

style="display:flex;flex-direction: column-reverse;"

id="allmap"

@ready="mapReady"

@click="getLocation"

:scroll-wheel-zoom="true"

>

<div style="display:flex;justify-content:center;margin:15px">

出发:<bm-auto-complete v-model="searchJingwei" :sugStyle="{zIndex: 999999}">

<el-input v-model="searchJingwei" style="width:300px;margin-right:15px" placeholder="输入地址"></el-input>

</bm-auto-complete>

目的地:<bm-auto-complete v-model="mdd" :sugStyle="{zIndex: 999999}">

<el-input v-model="mdd" style="width:300px;margin-right:15px" placeholder="输入地址"></el-input>

</bm-auto-complete>

<el-button type="primary" @click="getBaiduMapPoint">搜索</el-button>

</div>

<p>开始纬度:{{this.latitude}},{{this.longitude}}</p>

<p>结束纬度:{{this.jslatitude}},{{this.jslongitude}}</p>

<p>预计费用:</p>

<bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_LEFT"></bm-map-type>

<bm-marker v-if="infoWindowShow" :position="{lng: longitude, lat: latitude}">

<bm-label content="" :labelStyle="{color: 'red', fontSize : '24px'}" :offset="{width: -35, height: 30}"/>

</bm-marker>

<bm-info-window :position="{lng: longitude, lat: latitude}" :show="infoWindowShow" @clickclose="infoWindowClose">

<p>纬度:{{this.latitude}}</p>

<p>经度:{{this.longitude}}</p>

</bm-info-window>

</baidu-map>

</div>

</template>

<script>

export default {

data () {

return {

searchJingwei:'',

mdd:'',

infoWindowShow:false,

longitude:'',

latitude:'',

jslongitude:'',

jslatitude:'',

feiyong:'',

point:''

}

},

methods: {

//地图初始化

mapReady({ BMap, map }) {

// 选择一个经纬度作为中心点

this.point = new BMap.Point(113.27, 23.13);

map.centerAndZoom("九江", 15);

this.BMap=BMap

this.map=map

},

//点击获取经纬度

getLocation(e){

this.longitude=e.point.lng

this.latitude=e.point.lat

this.jslongitude=e.point.lng

this.jslatitude=e.point.lat

this.infoWindowShow=true

//console.log(this.latitude,this.latitude);

},

getBaiduMapPoint(){

let that=this

let myGeo = new this.BMap.Geocoder()

myGeo.getPoint(this.searchJingwei,function(point){

if(point){

that.map.centerAndZoom(point,15)

that.latitude=point.lat

that.longitude=point.lng

that.infoWindowShow=true

}

//console.log(that.latitude,that.longitude)

}),

myGeo.getPoint(this.mdd,function(point){

if(point){

that.map.centerAndZoom(point,15)

that.jslatitude=point.lat

that.jslongitude=point.lng

that.infoWindowShow=true

}

})

// let a = (map.getDistance(pointB.value, pointA.value) / 1000).toFixed(2)

},

//信息窗口关闭

infoWindowClose(){

this.latitude=''

this.longitude=''

this.infoWindowShow=false

},

},

}

</script>

<style >

#allmap{

height: 450px;

width: 100%;

margin: 10px 0;

}

</style>


回答:

从高德地图或者腾讯地图找找API吧,这个单纯经纬度是没法过去路线的。


回答:

百度地图:
通过官方提供的方法获取点的经纬度:

new BMap.Point(poi.point.lng, poi.point.lat)

/**

* 计算两点间的距离

* pt1 {lng:"12.34",lat:"3423"}第一个点的经纬度

* pt2 {lng:"12.34",lat:"3423"}第二个点的经纬度

* */

getDistance:function(pt1,pt2){

var map = new BMap.Map("container");

var point1 = new BMap.Point(pt1.lng,pt1.lat);

var point2 = new BMap.Point(pt2.lng,pt2.lat);

var distance = map.getDistance(point1,point2);

return distance;

},

https://blog.csdn.net/forze_cq/article/details/97767972

用他人开发的库:

https://juejin.cn/post/7025435587557457950


回答:

百度地图经纬度获取详细地址以及经纬度计算距离

https://blog.csdn.net/qq_42396791/article/details/87801234
/*  

* Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度; a=Lat1 – Lat2 为两点纬度之差 b=Lung1

* -Lung2 为两点经度之差; 6378.137为地球半径,单位为千米; 计算出来的结果单位为千米。

* 通过经纬度获取距离(单位:千米)

* @param lat1

* @param lng1

* @param lat2

* @param lng2

* @return

*/

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;

},

rad(d){

return d * Math.PI / 180.0;

}

以上是 vue 怎么通过经纬度来测算公里数? 的全部内容, 来源链接: utcz.com/p/934399.html

回到顶部