首页 / 浏览问题 / 云GIS / 问题详情
点击图层上面的标志怎么弹出信息框
77EXP 2017年08月02日
地图上有好几个图层,每个图层上面都有部件,现在想实现点击图层上面部件弹出信息框,显示出这个部件的详细信息。

1个回答

你好,建议一下两种方式:
1. (推荐)使用UTFGrid,参考博客:高亮地图点及属性信息展示优化方案
2. 将相关点线面全部查询回来放到Vector图层上,注册点击事件。

1,780EXP 2017年08月03日

获取不到数据提示  代码中该设置都设置了

  能不能帮我看看 ,一天没有解决掉这个问题。

一下两种方法二选一,关键就是在于utfgridSchool.maxExtent属性。
1. utfgridSchool.maxExtent = new SuperMap.Bounds(-180,-90,180,90); // 对应地图范围,左下右上
2. 先map.addLayer(layer); 之后再 utfgridSchool.maxExtent = layer.maxExtent; 因为layer是异步加载的,你的写法执行到赋值那句时layer.maxExtent还是null或者undefined。

另外,直接在iServer地图服务那儿,浏览于 for JavaScript,比如:
http://support.supermap.com.cn:8090/iserver/services/map-china400/rest/maps/China_4326.ijs
右上角选择图层,鼠标移动会显示属性,用的就是UTFGrid

现在数据显示出来了,但是utfgrid哪个效果没有显示出来,即如图

utfgrid图层本身是不可见的,它是属性瓦片,只请求分块存储的矢量地物属性信息,需要可视化显示需要做一些其他的工作,博客里是move事件触发时获取到点要素属性里的x、y坐标值,在对应位置添加点标记(SuperMap.Feature.Vector)和气泡(SuperMap.Popup)显示相关信息,点击事件里再做别的处理。

 我用了例子代码,研究了下,现在鼠标也找到标记标点,但是没有执行map.addPopup(infowin);所以没有弹出窗口,知道原因吗。

老大,这个弹出框怎么没有显出出来

if (info1 && info1.data) {
                            var dom1 = "<div class='pop' >" +
                                    "<div class='pop_header'><div class='pop_close' onclick='closeInfoWin1()'></div></div>" +
                                    "<img src='image/park.png' style='height: auto;width: auto;max-width: 100%;opacity: 1'>" +
                                    "<div class='pop_content'><p><span>地点:</span><span>" + info1.data.OBJNAME + "</span></p><p><span>坐标:</span><span>x:" + info1.data.SmX + "  y:" + info1.data.SmY + "</span></p></div>" +
                                    "<div class='pop_arrow'></div>" +
                                    "</div>";
                            alert(dom1);
                            var xOff1 = -(1 / map.getScale()) * 0.018;
                            var yOff1 = (1 / map.getScale()) * 0.035;
                            var pos1 = new SuperMap.LonLat(new Number(info1.data.SmX) + xOff1, new Number(info1.data.SmY) + yOff1);
                            infowin1 = new SuperMap.Popup("chicken",
                                    pos1,
                                    new SuperMap.Size(20, 20),
                                    dom1,
                                    false, null);
                            //根据弹窗内容自动调整弹窗大小
                            infowin1.autoSize = true;
                            //设置默认样式不显示
                            infowin1.backgroundColor = "none";
                            //移动地图以确保弹窗显示在窗口内
                            infowin1.panMapIfOutOfView = true;
                            map.addPopup(infowin1);
                            popfeature = new SuperMap.Feature.Vector(new SuperMap.Geometry.Point(info1.data.SmX, info1.data.SmY),
                                    null,
                                    {
                                        externalGraphic: "image/radar.gif",
                                        graphicWidth: 64,
                                        graphicHeight: 64
                                    }
                            );
                            vectorLayer.addFeatures([popfeature]);
                        }

...