mapbox中测量两点距离的示例代码
时间: 2024-01-10 16:03:42 浏览: 126
以下是示例代码:
```python
from math import sin, cos, sqrt, atan2, radians
def distance(lat1, lon1, lat2, lon2):
# approximate radius of earth in km
R = 6373.0
lat1_rad = radians(lat1)
lon1_rad = radians(lon1)
lat2_rad = radians(lat2)
lon2_rad = radians(lon2)
dlon = lon2_rad - lon1_rad
dlat = lat2_rad - lat1_rad
a = sin(dlat / 2)**2 + cos(lat1_rad) * cos(lat2_rad) * sin(dlon / 2)**2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
distance_km = R * c
return distance_km
```
此函数可以输入两个地点的经纬度,并返回它们之间的距离(单位为公里)。
相关问题
如果在mapbox中测量距离
,应该怎么做?
可以使用 Mapbox GL JS 中的 `turf.js` 库来计算距离。首先,需要在代码中加载 `turf.js` 库。然后,可以使用 `turf.distance()` 方法来计算两个点之间的直线距离或者使用 `turf.rhumbDistance()` 方法来计算两个点之间的航向距离。
mapbox 自定义点图层大小样式设置代码实现
要自定义 Mapbox 的点图层大小和样式,可以使用 Mapbox 的 `circle` 层。以下是一个示例代码,可以设置点的大小和颜色:
```js
map.addLayer({
id: 'points',
type: 'circle',
source: 'your-data-source',
paint: {
'circle-color': '#FF0000', // 点的颜色
'circle-radius': {
// 根据数据源的属性值设置点的大小
property: 'your-property',
stops: [
[0, 5], // 当属性值为 0 时,点的半径为 5 像素
[10, 10], // 当属性值为 10 时,点的半径为 10 像素
[20, 15] // 当属性值为 20 时,点的半径为 15 像素
]
}
}
});
```
在这个示例中,我们使用了 `circle` 层来创建一个点图层。 `circle-color` 属性用于设置点的颜色。`circle-radius` 属性用于根据数据源的属性值设置点的大小。
在 `circle-radius` 属性中,我们使用了 `stops` 数组来定义属性值和点的半径之间的对应关系。每个数组元素都是一个包含两个值的数组,第一个值是属性值,第二个值是对应的点的半径。这个示例中,当属性值为 0 时,点的半径为 5 像素,当属性值为 10 时,点的半径为 10 像素,当属性值为 20 时,点的半径为 15 像素。
你可以根据你自己的数据源属性值和自己的需要来调整这个示例代码。
阅读全文