python 计算经纬度两点距离_【Javascript】高德地图计算两点的坐标距离
时间: 2023-08-31 14:04:55 浏览: 174
以下是使用高德地图 API 计算两点距离的 Javascript 代码:
```javascript
function getDistance(lng1, lat1, lng2, lat2){
var radLat1 = lat1 * Math.PI / 180.0;
var radLat2 = lat2 * Math.PI / 180.0;
var a = radLat1 - radLat2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var 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 * 6378.137;//地球半径,单位千米
s = Math.round(s * 10000) / 10000;
return s;
}
```
其中,lng1、lat1 表示第一个点的经纬度,lng2、lat2 表示第二个点的经纬度,返回值为两点之间的距离(单位:千米)。
相关问题
怎么用Python实现将串口接受到的GPS经纬度通过调用高德地图api进行在地图上的标记
在Python中,你可以使用`pyserial`库来读取串口数据,然后解析出GPS经纬度。一旦获取了经纬度,可以利用`geopy`库进行地理编码,将其转换为高德地图API所需的坐标格式。接着,你可以调用高德地图的Web服务API来在地图上绘制点标记。
以下是简单的步骤:
1. **安装依赖库**:
- `pip install pyserial`
- 如果需要地理位置处理,也可以安装 `pip install geopy`
2. **连接串口并接收数据**:
```python
import serial
ser = serial.Serial('COM1', 9600) # 替换为实际的串口号和波特率
while True:
data = ser.readline().decode('utf-8').strip()
if data.startswith('GPGGA'): # 检查是否是GPS数据
parse_latitude_longitude(data)
```
3. **解析GPS数据**:
```python
def parse_latitude_longitude(line):
lat_long = line.split(',')
latitude = float(lat_long[2]) + float(lat_long[4])/60
longitude = float(lat_long[5]) + float(lat_long[7])/60
return latitude, longitude
```
4. **使用高德地图API**:
高德地图提供了JavaScript API或者Web服务API,你需要先注册并获取key。下面是一个基本示例,展示如何通过POST请求发送经纬度信息到高德地图服务:
```python
import requests
def mark_on_map(latitude, longitude, ak):
params = {
'location': f'{latitude},{longitude}',
'key': ak
}
response = requests.get('https://restapi.amap.com/v3/geocode/regeo', params=params)
result = response.json()
marker_url = result['regeocode']['addressComponent']['pois'][0]['markerUrl']
print(f'Marking at {marker_url}')
# 替换为你的高德API key
mark_on_map(latitude, longitude, 'your_api_key')
```
记得替换上述代码中的`COM1`, `9600`, `'your_api_key'`等为实际值,并处理可能出现的异常情况。此外,这只是一个基础的示例,实际应用中可能还需要处理更多的细节,比如错误处理、定期刷新地图等。
阅读全文