Google maps验证两个latlng在正确的方向上或靠近路径
问题描述:
我试图找出一种方法来验证两个点(LatLng)是否在路径(多段线)上或靠近它,具有一定的宽容度并在正确的方向。Google maps验证两个latlng在正确的方向上或靠近路径
我期望得到接受点,折线和宽容的阵列功能。或者是服务的组合。
function isPointsOnPath(points, polyline, tolerance): boolean
在此先感谢
答
您可以用额外的宽容与polyline
插入您的多边形,即一个区域,然后使用containsLocation
。 您需要填充绘制所需多边形的点阵列。你 Check this jsfiddle
也可以使用从几何库。
isLocationOnEdge(点:经纬度,聚:多边形|折线,宽容:多少?)
公差是基于纬度/经度
如(44.9875,35.9812)是项所需的小数位精度在多段线上,如果公差为0.00001
,那么如果将该点更改为(44.9876,35.9812),该点将位于多段线上。
的containsLocation
一个例子:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 24.886, lng: -70.269},
zoom: 5,
});
var triangleCoords = [
{lat: 25.774, lng: -80.19},
{lat: 18.466, lng: -66.118},
{lat: 32.321, lng: -64.757}
];
var bermudaTriangle = new google.maps.Polygon({paths: triangleCoords});
google.maps.event.addListener(map, 'click', function(e) {
var resultColor =
google.maps.geometry.poly.containsLocation(e.latLng, bermudaTriangle) ?
'blue' :
'red';
var resultPath =
google.maps.geometry.poly.containsLocation(e.latLng, bermudaTriangle) ?
// A triangle.
"m 0 -1 l 1 2 -2 0 z" :
google.maps.SymbolPath.CIRCLE;
new google.maps.Marker({
position: e.latLng,
map: map,
icon: {
path: resultPath,
fillColor: resultColor,
fillOpacity: .2,
strokeColor: 'white',
strokeWeight: .5,
scale: 10
}
});
});
}
<div id="map"></div>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDztlrk_3CnzGHo7CFvLFqE_2bUKEq1JEU&libraries=geometry&callback=initMap"></script>
完整的 source code服务器迁移
那么,有核实的队友,贴近并与通道方向上点的方向两件事情。 –
我想你有一个点的数组来生成你的折线。您可以绘制一个矩形,与上,下此数组中的约束和饲料它的triangleCoords功能(在你的情况下,polygonCoords) –
忘了提,我需要做的是在服务器端。 –