怎么通过经纬度 测算出公里数然后显示费用 每公里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>
百度地图经纬度获取详细地址以及经纬度计算距离
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;
}
百度地图:
通过官方提供的方法获取点的经纬度:
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
从高德地图或者腾讯地图找找API吧,这个单纯经纬度是没法过去路线的。
问题内容: 我有一个按照以下示例结构的mysql表: 现在我想做的是创建一个查询,该查询将在搜索位置的选定公里内选择结果 因此,假设他们搜索“灰色河流”,然后选择“在20公里以内找到所有结果” 它显然应该选择“灰河”,但也应根据经度和纬度选择灰河20公里以内的所有位置。 我真的不知道该怎么做。我已经读过haversine公式,但不知道如何将其应用于mysql SELECT。 任何帮助将非常感激。
问题内容: 我有一个具有这样的结构的表: 我想计算给定坐标与数据库中保存的坐标之间的距离。 我当前的查询: 再加上一些的数据。 有什么方法可以优化该查询?进行连接大约需要13毫秒。 我还需要在此处添加一些以及用于分页的商店总数。 问题答案: 这里有一些想法,根据您的实际情况,其中一些想法可能不适用。 您可以将纬度和经度转换为弧度,并将其存储在行中。这将节省这些计算的成本(实际上,在存储数据时,成本
我想在不同的郊区使用下面的API和pss来获得郊区或地址的纬度和经度。 http://en.wikipedia.org/w/api.php?format=json 此外,郊区列表将约为16,000个,那么如何使用此API提取地理坐标?
Highmaps 从 1.1.0 开始支持经纬度定位功能,该功能依赖第三方库 proj4js(需要在 Highmaps 之前引入),最新版的文件可以从 cdnjs 上获取 <script src="https://cdn.bootcdn.net/ajax/libs/proj4js/2.7.2/proj4.js"></script> 有了经纬度支持后,我们可以通过 lon 和 lat 属性来指定经
我很难计算我在网页上的div标签中托管的图像的纬度和经度值。我可以很容易地计算出图像的x、y(像素)坐标,并将它们保存到脚本中的一个变量中。棘手的是... 地图不是墨卡托投影,所以我不能简单地线性插值x,y像素坐标到lat和lon值。然而,我确实有奢侈的知道所有四个角的纬度和经度的图像(见贴图),地图在图像上的投影,中央子午线,和原点的纬度。 800x600像素的图像是美国的,我基本上试图通过传递
https://stackoverflow.com/a/4682656/7924630这是一个非常有用的答案,帮助我解决这个问题 出于某种原因,这返回的区域值很小,我不明白为什么。例如,我在一个矩形区域上测试了这个。面积应该约为45平方米,但它返回0.0137平方米。我尝试了其他的实现,但没有找到任何对本机JavaScript有用的东西。