Leaflet - 使用latLon +距离(米)+角度(度)创建标记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leaflet - 使用latLon +距离(米)+角度(度)创建标记相关的知识,希望对你有一定的参考价值。

如何计算距离标记A的给定距离(以度为单位)给定距离的新点(标记B)?

谷歌API有这个,但我在传单中找不到它:

var pointA = new google.maps.LatLng(25.48, -71.26); 
var radiusInKm = 10;
var pointB = pointA.destinationPoint(90, radiusInKm);

enter image description here

答案

您可以使用destinationLeaflet.GeometryUtil方法计算目标点并在那里创建一个标记:

var center = [40.69, -73.98];
var radiusInKm = 10;
var angleInDegrees = 90;

var A = L.marker(center).addTo(map);
var B = L.GeometryUtil.destination(markerA.getLatLng(), angleInDegrees, radiusInKm * 1000);
L.marker(B).addTo(map);

和一个演示

var center = [40.69,-73.98];
var radiusInKm = 10;
var angleInDegrees = 90;

var map = L.map('map').setView(center, 11);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

var marker = L.marker(center).addTo(map);
L.circle(marker.getLatLng(), {
    color: 'red',
    fillColor: '#f03',
    fillOpacity: 0.2,
    radius: radiusInKm * 1000
}).addTo(map);

var to = L.GeometryUtil.destination(marker.getLatLng(), angleInDegrees, radiusInKm * 1000);
L.marker(to).addTo(map);
html, body {
  height: 100%;
  margin: 0;
}
#map {
  width: 100%;
  height: 100%;
}
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.2.0/dist/leaflet.css" integrity="sha512-M2wvCLH6DSRazYeZRIm1JnYyh22purTM+FDB5CsyxtQJYeKq83arPe5wgbNmcFXGqiSH2XR8dT/fJISVA1r/zQ==" crossorigin=""/>

<script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet.js" integrity="sha512-lInM/apFSqyy1o6s89K4iQUKg6ppXEgsVxT35HbzUupEVRh2Eu9Wdl4tHj7dZO0s1uvplcYGmt3498TtHq+log==" crossorigin=""></script>
 
 <script src="https://npmcdn.com/leaflet-geometryutil"></script>
 
 <div id='map'></div>

以上是关于Leaflet - 使用latLon +距离(米)+角度(度)创建标记的主要内容,如果未能解决你的问题,请参考以下文章

Esri-Leaflet - 远距离搜索

如何计算像geojson.io这样的Leaflet中折线的距离?

动态放大以适应所有标记 React-leaflet

使用一组请求的点进行距离计算

使用 Javascript 计算边界框

如何使用 ARCore 测量距离?