首页 / 浏览问题 / 云GIS / 问题详情
forleaflet 数据服务 示例 范围查询 信息和图标都不能显示
2EXP 2020年03月17日

使用产品:iServer10i 操作系统:win10 x64

数据类型:示例数据

问题详细描述:

您好,我打算模仿一下iclient for leaflet的数据服务的范围查询服务功能,这个功能是设置好红框范围,然后范围内的首都就会有位置图标出来,点击图标出现首都名字等信息,但是我复制了代码,改了必要的信息,却不能显示图标,更不能点击出现文字了。我这里只能显示地图以及红框,出现不了图标和信息,我去看服务管理,能看到数据服务被请求过(就是那个圆饼图)。请问是什么原因呢?非常感谢。(事实上,我是想实现框选范围查询发布好的shp内的数据来着,现在已经实现了显示shp数据,但是想实现数据查询,现在在实验。所以还想问您这个字段名什么的,是怎么回事呢?因为不会看那个worldmap数据的字段啊什么的到底,所以就不知道怎么对应这个字段。)真心感谢!

实现的功能示例链接如下:https://iclient.supermap.io/examples/leaflet/editor.html#02_getFeatureByBounds

代码如下:



    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title data-i18n="resources.title_getFeatureByBounds"></title>
    <script type="text/javascript" src="js/include-web.js"></script>
    </head>


    <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
        <div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
        <script type="text/javascript" src="dist/leaflet/include-leaflet.js"></script>
        
      
        <script type="text/javascript">
            var resultLayer;
            var map,url="http://localhost:8090/iserver/services/map-world/rest/maps/World";
            var dataurl="http://localhost:8090/iserver/services/data-world/rest/data";
            
            map = L.map('map', {
        preferCanvas: true,
        crs: L.CRS.EPSG4326,
        center: {lon: 20, lat: -10},
        maxZoom: 18,
        zoom: 2
    });

                L.supermap.tiledMapLayer(url).addTo(map);
                query();
                
                
              function query() {
        
        var polygon = L.polygon([[-20, 20], [0, 20], [0, 40], [-20, 40], [-20, 20]], {color: 'red'});
        polygon.addTo(map);
        var boundsParam = new SuperMap.GetFeaturesByBoundsParameters({
            datasetNames: ["World:Capitals"],
            bounds: polygon.getBounds()
        });
        L.supermap.featureService(dataurl).getFeaturesByBounds(boundsParam, function (serviceResult) {
                resultLayer = L.geoJSON(serviceResult.result.features, {
                    onEachFeature: function (feature, layer) {
                        layer.bindPopup(resources.text_capital+":" + feature.properties.CAPITAL);
                    }
                }).addTo(map);
            });
    }


        </script>
   
   
</html>

1个回答

以官网范例中的代码来说,你的dataurl是https://iserver.supermap.io/iserver/services/data-world/rest/data/这个地址,其中  datasetNames: ["World:Capitals"]   中前面的是数据源的名称,后面的是数据集的名称。按照下列图片顺序点击先后获得数据源的名称,即datasource目录下的名称,以及数据集的名称,即dataset目录下的名称。代码的话没什么问题,建议检查一下你的服务引用。

5,668EXP 2020年03月17日
用sql成功查询了,谢谢您啦!
...