Как показать маркер только внутри полигона. Если маркер вне полигона не должен отображаться на карте googlemap
Привет,
Мой вопрос заключается в том , как найти lat long внутри нарисованного полигона или нет у меня есть записи mutliple в моей базе данных, когда приложение запущено,то все маркеры видны, а когда мы рисуем форму и применяем, то только маркер внутри полигона показывает, это очень важно для меня, пожалуйста, помогите мне.
Заранее спасибо
Что я уже пробовал:
$("#poly_apply").on("click", function (e) { $(".loader-container").show(); records = []; polySides = myaary.length - 1; for (var i = 0; i < myaary.length; i++) { latarr.push(myaary[i].lat()); lanarr.push(myaary[i].lng()); }; var minlt = Math.min.apply(null, latarr); var maxlt = Math.max.apply(null, latarr); var minln = Math.min.apply(null, lanarr); var maxln = Math.max.apply(null, lanarr); var vald = { mn_lt: minlt, mx_lt: maxlt, mn_ln: minln, mx_ln: maxln } $.getJSON("/MapSearch/Get_Result/", vald, function (data) { var filtered = []; for (var j = 0; j < records.length; j++) { var item = records[j]; if (pointInPolygon(polySides, latarr, lanarr, item.lat, item.lng)) { var marker = new google.maps.Marker({ position: new google.maps.LatLng(item.lat, item.lng), icon: img.jpg, title: 'Click me', map: map }); } } }); }); function pointInPolygon(polySides, polyX, polyY, x, y) { var j = polySides - 1; oddNodes = 0; for (i = 0; i < polySides; i++) { if (polyY[i] < y && polyY[j] >= y || polyY[j] < y && polyY[i] >= y) { if (polyX[i] + (y - polyY[i]) / (polyY[j] - polyY[i]) * (polyX[j] - polyX[i]) < x) { oddNodes = !oddNodes; } } j = i; } return oddNodes;}
Patrice T
В чем проблема в коде ?
ErBhati
маркеры отображаются за пределами нарисованного многоугольника.
Patrice T
это означает, что pointInPolygon
неудачи.
Попробуйте установить квадрат как многоугольник и проверить с точкой внутри и одной снаружи.
ErBhati
мы не можем ограничить пользователя рисовать квадрат как многоугольник.