如何仅在多边形内显示标记。如果googlemap上不显示多边形外部的标记 [英] How to show marker inside polygon only. If marker outside polygon should not be shown on googlemap

查看:128
本文介绍了如何仅在多边形内显示标记。如果googlemap上不显示多边形外部的标记的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我的问题是如何在绘制的多边形内找到lat long或者我的数据库中有多个mutliple记录,当app启动时所有标记都可见当我们绘制形状并应用时,只有多边形显示内的标记,这对我来说非常重要请帮帮我。



提前谢谢



我尝试了什么:



Hi,

My Question is how to find lat long inside the drawn polygon or not i have mutliple records in my database , when app started then all markers visible and when we draw shape and apply then only marker inside the polygon show ,,this is very important for me please help me.

Thanks in advance

What I have tried:

$("#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;}

推荐答案

#poly_apply)。on( 点击 function (e){
("#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 = 数学 .max.apply( null ,latarr);
var minln = 数学 .min.apply( null ,lanarr);
var maxln = 数学 .max.apply( null ,lanarr);
var vald = {
mn_lt:minlt,
mx_lt:maxlt,
mn_ln:minln,
mx_ln:maxln
}
(".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 (数据){
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:' 点击我'
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;}
.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;}


这篇关于如何仅在多边形内显示标记。如果googlemap上不显示多边形外部的标记的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆