SuperMap 查询定位

一、本篇使用SuperMap iClient for
Leaflet 来实现对各省省会城市的进行查询,并在地图上标记,具体效果如下
SuperMap 查询定位_第1张图片

二、地图查询要对应查询的服务、参数以及方法,地图查询的需要这三个主要接口。

SuperMap 查询定位_第2张图片

三、首先把地图加载到map上,我这里使用的了两个地图服务,是因为我单独使用China的时候地图可以显示数据却查询不出来,而使用ChinaDark_4326时数据查询出来了但地图却不显示。所以一个用来显示地图一个用来查询数据。



var map,
url = "http://localhost:8090/iserver/services/map-chinaPOI/rest/maps/China";

       
var dataurl
= "http://localhost:8090/iserver/services/map-chinaPOI/rest/maps/ChinaDark_4326";

       
map = L.map("map", {

            center: [33,114 ],

            maxZoom: 18,

            zoom: 2

       
});

       
L.supermap.tiledMapLayer(url).addTo(map);

四、设置一个方法封装地图查询,查询图层中SmID 小于 10 的10个城市位置,实例化queryBySQL,里面填写属性信息 下面可以根据查询功能的需要来选择可选的参数,具体的内容在API文档里面有。



function
geoQuery() {

            var param = new SuperMap.QueryBySQLParameters({

                queryParams: {//查询过滤条件数组

                    name: "China_ProCenCity_pt@China", //查询图层 

                    attributeFilter: " SmID < 10" //查询条件 

                }

            });

           
L.supermap.queryService(dataurl).queryBySQL(param, function (serviceResult) { 

 

//可以输出一下result,在控制台如果显示出结果就说明查询成功了

                var result = serviceResult.result;

                console.log(result);//

                var myIcon = L.icon({

                    iconUrl: "/images/city-pointpng.png", //图片路径 用来标记的符号

                    iconSize:[40] }); 

 

                resultLayer =
L.geoJSON(result.recordsets[0].features, {

                    pointToLayer: function (geojsonPoint,
latlng) {

                        return L.marker(latlng, {
icon: myIcon }); //返回marker


                    }

                }).addTo(map);//加载到map

            });

       
}

总结:1、加载地图

2、调用查询接口,查询指定图层

你可能感兴趣的:(SuperMap 查询定位)