【发布时间】:2016-05-23 09:23:02
【问题描述】:
我有 2 条路线,路线 A to B 和 C to D 在谷歌地图上。现在路线C to D 与路线A to B 共享同一条街道/路径。如何检查一个是否在另一个的折线上?
【问题讨论】:
标签: javascript cordova google-maps
我有 2 条路线,路线 A to B 和 C to D 在谷歌地图上。现在路线C to D 与路线A to B 共享同一条街道/路径。如何检查一个是否在另一个的折线上?
【问题讨论】:
标签: javascript cordova google-maps
您可以使用Geometry Library's poly 命名空间,其中包含确定给定点是否在多边形或折线内部或附近的实用函数。
使用isLocationOnEdge(point:LatLng, poly:Polygon|Polyline, tolerance?:number) 方法来确定一个点是否落在折线上或附近,或者在多边形的边缘上或附近。您需要将点、折线/多边形和可选的公差值(以度为单位)传递给google.maps.geometry.poly.isLocationOnEdge(),然后如果该点与直线或边缘上最近点之间的距离在指定的公差范围内,则该函数返回 true。
例子:
function initialize() {
var myPosition = new google.maps.LatLng(46.0, -125.9);
var mapOptions = {
zoom: 5,
center: myPosition,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
var map = new google.maps.Map(document.getElementById('map'),
mapOptions);
var cascadiaFault = new google.maps.Polyline({
path: [
new google.maps.LatLng(49.95, -128.1),
new google.maps.LatLng(46.26, -126.3),
new google.maps.LatLng(40.3, -125.4)
]
});
cascadiaFault.setMap(map);
if (google.maps.geometry.poly.isLocationOnEdge(myPosition, cascadiaFault, 10e-1)) {
alert("Relocate!");
}
}
google.maps.event.addDomListener(window, 'load', initialize);
您也可以在 GitHub 上查看这些examples。
【讨论】: