Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GoogleMaps徒手多边形创建以前是有效的,现在不是_Javascript_Asp.net_Arrays_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript GoogleMaps徒手多边形创建以前是有效的,现在不是

Javascript GoogleMaps徒手多边形创建以前是有效的,现在不是,javascript,asp.net,arrays,google-maps,google-maps-api-3,Javascript,Asp.net,Arrays,Google Maps,Google Maps Api 3,1年前,我创建了一个页面,通过谷歌地图徒手选择区域来搜索客户。我用GDouglasPeucker来做这件事,当我创建页面时,一切都很好,但现在不行了,我不明白为什么 这是GDouglasPeucker函数: function GDouglasPeucker(source, kink) /* source[] Input coordinates in GLatLngs */ /* kink in metres, kinks above this depth kept */ /* kink d

1年前,我创建了一个页面,通过谷歌地图徒手选择区域来搜索客户。我用GDouglasPeucker来做这件事,当我创建页面时,一切都很好,但现在不行了,我不明白为什么

这是GDouglasPeucker函数:

function GDouglasPeucker(source, kink)
/* source[] Input coordinates in GLatLngs   */
/* kink in metres, kinks above this depth kept  */
/* kink depth is the height of the triangle abc where a-b and b-c are two consecutive line segments */ {
var n_source, n_stack, n_dest, start, end, i, sig;
var dev_sqr, max_dev_sqr, band_sqr;
var x12, y12, d12, x13, y13, d13, x23, y23, d23;
var F = ((Math.PI / 180.0) * 0.5);
var index = new Array(); /* aray of indexes of source points to include in the reduced line */
var sig_start = new Array(); /* indices of start & end of working section */
var sig_end = new Array();

/* check for simple cases */

if (source.length < 3)
    return (source);    /* one or two points */

/* more complex case. initialize stack */

n_source = source.length;
band_sqr = kink * 360.0 / (2.0 * Math.PI * 6378137.0);  /* Now in degrees */
band_sqr *= band_sqr;
n_dest = 0;
sig_start[0] = 0;
sig_end[0] = n_source - 1;
n_stack = 1;

/* while the stack is not empty  ... */
while (n_stack > 0) {

    /* ... pop the top-most entries off the stacks */

    start = sig_start[n_stack - 1];
    end = sig_end[n_stack - 1];
    n_stack--;

    if ((end - start) > 1) {  /* any intermediate points ? */

        /* ... yes, so find most deviant intermediate point to
               either side of line joining start & end points */

        x12 = (source[end].lng() - source[start].lng());
        y12 = (source[end].lat() - source[start].lat());
        if (Math.abs(x12) > 180.0)
            x12 = 360.0 - Math.abs(x12);
        x12 *= Math.cos(F * (source[end].lat() + source[start].lat()));/* use avg lat to reduce lng */
        d12 = (x12 * x12) + (y12 * y12);

        for (i = start + 1, sig = start, max_dev_sqr = -1.0; i < end; i++) {

            x13 = (source[i].lng() - source[start].lng());
            y13 = (source[i].lat() - source[start].lat());
            if (Math.abs(x13) > 180.0)
                x13 = 360.0 - Math.abs(x13);
            x13 *= Math.cos(F * (source[i].lat() + source[start].lat()));
            d13 = (x13 * x13) + (y13 * y13);

            x23 = (source[i].lng() - source[end].lng());
            y23 = (source[i].lat() - source[end].lat());
            if (Math.abs(x23) > 180.0)
                x23 = 360.0 - Math.abs(x23);
            x23 *= Math.cos(F * (source[i].lat() + source[end].lat()));
            d23 = (x23 * x23) + (y23 * y23);

            if (d13 >= (d12 + d23))
                dev_sqr = d23;
            else if (d23 >= (d12 + d13))
                dev_sqr = d13;
            else
                dev_sqr = (x13 * y12 - y13 * x12) * (x13 * y12 - y13 * x12) / d12;// solve triangle

            if (dev_sqr > max_dev_sqr) {
                sig = i;
                max_dev_sqr = dev_sqr;
            }
        }

        if (max_dev_sqr < band_sqr) {   /* is there a sig. intermediate point ? */
            /* ... no, so transfer current start point */
            index[n_dest] = start;
            n_dest++;
        }
        else {
            /* ... yes, so push two sub-sections on stack for further processing */
            n_stack++;
            sig_start[n_stack - 1] = sig;
            sig_end[n_stack - 1] = end;
            n_stack++;
            sig_start[n_stack - 1] = start;
            sig_end[n_stack - 1] = sig;
        }
    }
    else {
        /* ... no intermediate points, so transfer current start point */
        index[n_dest] = start;
        n_dest++;
    }
}

/* transfer last point */
index[n_dest] = n_source - 1;
n_dest++;

/* make return array */
var r = new Array();
for (var i = 0; i < n_dest; i++)
    r.push(source[index[i]]);
return r;

}
生成错误的行是
poly=new google.maps.Polygon(polyOptions)

这就是错误

有人能帮我吗

var theArrayofLatLng = path.j;
这里
j
是最小化的字段名。它是无文件记录的,不应使用。最有可能的是,谷歌发布了新版本的API,而这个领域现在有了不同的名称,将来它还会再次改变

你应该使用
var theArrayofLatLng=path.getArray()取而代之

var theArrayofLatLng = path.j;