gpt4 book ai didi

javascript - 查明 LngLat 点是否位于其他两个点之间

转载 作者:行者123 更新时间:2023-12-02 18:02:34 28 4
gpt4 key购买 nike

我正在使用 Google map ,并试图找出一个点是否位于其他两个点之间。到目前为止我所做的方法是制作两个向量。一个在两个“检查”点之间,一个在“检查”点之一与"new"点之间。计算出向量后,我对它们进行了交叉,并得到了交叉值。然后我对我拥有的所有“检查”点做了同样的事情,如果新的 crossProduct 比旧的小,我就将其关闭。到目前为止,这一直有效,但现在我遇到了这无法解决的麻烦。因此,我正在寻找另一个公式来确定该点是否位于其他两点之间,并有一定的误差范围。

希望你能帮我解决这个问题

最佳答案

在原始两点之间构造一条折线。然后使用isLocationOnEdge函数来确定第三个点是否在距折线一定度数的范围内。

例如

<!DOCTYPE html>
<html>
<head>
<title>Is a point within x degrees of a polyline</title>

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { width:100%; height:100%; }
</style>
<!-- need to load the geometry library -->
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script>

<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(54.5003526, -3.0844116);

var myOptions = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var marker = new google.maps.Marker({
position: latlng,
map: map,
title: "foo"
});

var latLng1 = new google.maps.LatLng(54.60039, -3.13632);
var latLng2 = new google.maps.LatLng(54.36897, -3.07561);

var polyline = new google.maps.Polyline({
path: [latLng1, latLng2],
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2,
map: map
});

console.log(google.maps.geometry.poly.isLocationOnEdge(latlng, polyline));
console.log(google.maps.geometry.poly.isLocationOnEdge(latlng, polyline, 1));
console.log(google.maps.geometry.poly.isLocationOnEdge(latlng, polyline, 0.1));
console.log(google.maps.geometry.poly.isLocationOnEdge(latlng, polyline, 0.01));
console.log(google.maps.geometry.poly.isLocationOnEdge(latlng, polyline, 0.001));
console.log(google.maps.geometry.poly.isLocationOnEdge(latlng, polyline, 0.0001));
console.log(google.maps.geometry.poly.isLocationOnEdge(latlng, polyline, 0.00001));
}

google.maps.event.addDomListener(window, 'load', initialize);
</script>

</head>
<body>
<div id="map_canvas"></div>
</body>
</html>

这样做我可以看到我的点与我的线的偏差在 0.1 度之内,但它不在我的线的 0.01 度之内。您的容忍程度将根据具体情况而有所不同。

关于javascript - 查明 LngLat 点是否位于其他两个点之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20400342/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com