Я пытаюсь проверить, проходит ли полилиния Google Maps через многоугольник Google Maps. Звучит просто. Но я искал и искал... и не нашел реальных ответов.
Ближе всего я получил эту функцию. Это работает, но, к сожалению, иногда возвращает ложные срабатывания.
//nvert = the number of points in the polygon
//vertx = an array of all the polygon's latitudes
//verty = an array of all the polygon's longitudes
//elat = the current point's latitude
//elng = the current point's longitude
function pnpoly( nvert, vertx, verty, elat, elng) {
var i, j, c = false;
for( i = 0, j = nvert-1; i < nvert; j = i++ ) {
if( ( ( verty[i] > elng ) != ( verty[j] > elng ) ) &&
( elat < ( vertx[j] - vertx[i] ) * ( elng - verty[i] ) / ( verty[j] - verty[i] ) + vertx[i] ) ) {
c = !c;
}
}
return c;
}
Прежде чем я попробую совершенно новый метод (безумная математическая идея, которая возвращает меня к исчисление 12 класса), мне интересно, кто-нибудь знает, как это сделать.