openlayers.getgeometry未定义(多重约束对象)

fafcakar  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(183)

我想用多个下拉菜单选择并缩放Map。我想我在第二次更新时遇到了.getgeometry错误,因为我的url中有cql_过滤器。当我进行第一次选择时,选定的特征将放大。无论我选择第二个选项中的哪一个,我都会得到一个错误。
const extentyol=yollar.getfeatures().getarray()[selectyol].getgeometry().getextent();
我在这部分有错误,但在第一部分效果很好。。
我不明白我哪里做错了。我的错在哪里
如果有人能帮忙,非常感谢:*

var url = 'http://localhost:8080/geoserver/kbs/ows? service=WFS&version=1.0.0&request=GetFeature&typeName=kbs:mahalle&outputFormat=application/json&SRS=EPSG:3857';
    $.getJSON(
        url,
        function (data) {
            loadFeatures(data);
        }
    );
       function loadFeatures(data) {
        // load vector source
        mahalle.getSource().addFeatures(new ol.format.GeoJSON().readFeatures(data));

        const featuresmah = mahalle.getSource().getFeatures();
        // add select options
        $.each(featuresmah, function (key, value) {
            $('#mahalleId').append('<option value=' + value.get('objectid') + '>' + value.get('yazi') + '</option>');
        });
        $('#mahalleId').on('change', function () {
            var selected = $('#mahalleId').val();
            const extentmah = mahalle.getSource().getFeatures()[selected]
                .getGeometry().getExtent();
            map.getView().fit(extentmah, map.getSize());

            $.ajax({
                method: 'GET',
                url: 'http://localhost:8080/geoserver/kbs/wfs',
                data: {
                    service: 'WFS',
                    request: 'GetFeature',
                    typename: 'kbs:yollar',
                    outputFormat: 'application/json',
                    cql_filter: "mahalle_id='" + mahalleId.value + "'",
                    srsname: 'EPSG:3857'
                },
                success: function (response) {
                    yollar.getSource().addFeatures(new ol.format.GeoJSON().readFeatures(response));

                    map.getView().fit(yollar.getSource().getExtent());

                    const featuresyol = yollar.getSource().getFeatures();

                    $.each(featuresyol, function (key, value) {
                        $('#yolId').append('<option value=' + value.get('objectid') + '>' + value.get('sokak_adi') + '</option>');
                    });

                    $('#yolId').on('change', function (e) {
                        const selectyol = $('#yolId').val();

                        const extentyol = yollar.getFeatures().getArray()[selectyol]
                            .getGeometry().getExtent();
                        map.getView().fit(extentyol, map.getSize());
                        console.log(selectyol.val());
                    });
                },
                fail: function (jqXHR, textStatus) {
                    console.log("Request failed: " + textStatus);
                }
            }); 
        })
    }[enter image description here][1]

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题