Javascript isLocationOnEdge()以拆分路由
我是一名web开发人员,是巴西人,我正在为我的公司的布线系统提供服务,但是我在理解库的几何图形方面有困难,我想知道是否有任何方法可以让我知道绘制路线的位置在多边形1、2、3或4的内部。这是我划分路线,并跟踪多达4个连接。它有一张底部的图片和我已经有的图片,还有代码Javascript isLocationOnEdge()以拆分路由,javascript,google-maps,Javascript,Google Maps,我是一名web开发人员,是巴西人,我正在为我的公司的布线系统提供服务,但是我在理解库的几何图形方面有困难,我想知道是否有任何方法可以让我知道绘制路线的位置在多边形1、2、3或4的内部。这是我划分路线,并跟踪多达4个连接。它有一张底部的图片和我已经有的图片,还有代码 function initMap() { var map = new google.maps.Map(document.getElementById("map")); function renderDirections(result)
function initMap() {
var map = new google.maps.Map(document.getElementById("map"));
function renderDirections(result) {
var directionsRenderer = new google.maps.DirectionsRenderer;
directionsRenderer.setMap(map);
directionsRenderer.setDirections(result);
}
var triangle1 = [
{lat: -23.0829, lng: -46.57676},
{lat: -23.61616, lng: -46.57483},
{lat: -23.60694, lng: -47.54864}
];
var Triangle1 = new google.maps.Polygon({
paths: triangle1,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 3,
fillColor: '#00FF00',
fillOpacity: 0.35
});
Triangle1.setMap(map);
var triangle2 = [
{lat: -23.0829, lng: -46.57676},
{lat: -23.61616, lng: -46.57483},
{lat: -23.61131, lng: -45.67469}
];
var Triangle2 = new google.maps.Polygon({
paths: triangle2,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 3,
fillColor: '#4169E1',
fillOpacity: 0.35
});
Triangle2.setMap(map);
var triangle3 = [
{lat: -23.61131, lng: -45.67469},
{lat: -23.61616, lng: -46.57483},
{lat: -24.07554, lng: -46.57185}
];
var Triangle3 = new google.maps.Polygon({
paths: triangle3,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 3,
fillColor: '#FFA500',
fillOpacity: 0.35
});
Triangle3.setMap(map);
var triangle4 = [
{lat: -24.07554, lng: -46.57185},
{lat: -23.60694, lng: -47.54864},
{lat: -23.61616, lng: -46.57483}
];
var Triangle4 = new google.maps.Polygon({
paths: triangle4,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 3,
fillColor: '#FFFF00',
fillOpacity: 0.35
});
Triangle4.setMap(map);
var directionsService = new google.maps.DirectionsService;
function requestDirections() {
directionsService.route({
origin: "Rua pedro jose lorenzini",
destination: "Rua pedro jose lorenzini",
waypoints: waypts,
optimizeWaypoints: true,
provideRouteAlternatives: true,
travelMode: google.maps.DirectionsTravelMode.DRIVING
}, function(result) {
renderDirections(result);
if(google.maps.geometry.poly.containsLocation(result, Triangle1) == true) {
alert("yes");
}
});
}
requestDirections(waypts);
requestDirections(waypts2);
}
我明白了
首先,我检索了将成为路由一部分的地址的坐标,我将每个地址放在其各自的字段中,然后我使用函数检查该坐标是否属于多边形
,返回值true
,它被放在路由数组
function(result) {
for(var i = 0; i < 24; i++){
if($("#latLgn_"+i).val() != "" || $("#latLgn"+i).val() != undefined){
temp = $("#latLgn"+i).val()
temp = temp.split(",")
temp[0] = temp[0].replace("(","")
temp[1] = temp[1].replace(")","")
temp[0] = Number(temp[0])
temp [1] = Number(temp[1])
var point = new google.maps.LatLng({lat: temp[0], lng: temp[1]})
if(google.maps.geometry.poly.containsLocation(point, Triangle1) == true) {
route.push($("#latLgn"+i).val());
}else{console.log("Not found")}
}
}
renderDirections(result);
}
函数(结果){
对于(变量i=0;i<24;i++){
if($(“#latLgn_“+i).val()!=”||$(“#latLgn”+i).val()!=未定义){
temp=$(“#latLgn”+i).val()
温度=温度拆分(“,”)
临时[0]=临时[0]。替换(“(”,“”)
临时[1]=临时[1]。替换(“)”,“”)
温度[0]=编号(温度[0])
温度[1]=编号(温度[1])
var point=new google.maps.LatLng({lat:temp[0],lng:temp[1]})
if(google.maps.geometry.poly.containsLocation(point,Triangle1)==true){
路径推送($(“#latLgn”+i).val());
}else{console.log(“未找到”)}
}
}
渲染方向(结果);
}
为了澄清,您有一个多边形,您想检查路线是否在多边形的边界内,对吗?没错,我想知道路线上的每个点在哪个边界内,您想知道它在哪个多边形中?我真正想做的是将地图分为四部分,跟踪多边形内的路线并限制其输出,因为我们平均每天交付100次,我们不能让驾驶员穿过道路。我的想法是知道地址是否属于该多边形,从而能够组装4条路由