首页 / 浏览问题 / 云GIS / 问题详情
点击地图任意地方动态定位
77EXP 2017年08月21日
点击地图任意位置会出现个位置图表,并读取当前所在区域的名称或其他信息。

1个回答

您好,您可以通过添加鼠标点击事件click点击弹出信息框方式达到您想要的效果,弹出信息框的具体设置方法详见http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/examples/examples.html#shadowPopup

4,524EXP 2017年08月21日
这个不是我想要的效果,这个不可以动态定位啊。
您把固定坐标改成通过点击事件获取的坐标就可以了
function init(){
             map = new SuperMap.Map("map",{controls:[
             new SuperMap.Control.Zoom(),
             new SuperMap.Control.Navigation()]});
             layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, null,{maxResolution:"auto"});
             layer.events.on({"layerInitialized":addLayer});
             map.events.on({"click":addPop});
        }

        function addLayer(){
             map.addLayer(layer);
             map.setCenter(new SuperMap.LonLat(0,0), 0);
        }
        function addPop(a)
        {
            var lonlat = map.getLonLatFromPixel(new SuperMap.Pixel(a.xy.x,a.xy.y));
            var newHtml = "<br>位置坐标:"+ "lon="+ lonlat.lon + "," + "lat="+ lonlat.lat;  
            var popwin = new SuperMap.Popup.FramedCloud("1",
            lonlat,
            new SuperMap.Size(80,20),
            newHtml,
            null,
            false,
            null);
            map.addPopup(popwin);
        }

   实现了,老师,但是现在那个怎么在添加那个mark标记图标。

详细描述下你最终想要的效果是什么样的?

    就是点击地图有个mark标记图标然后上面是弹出框,我想要下面那个mark图标

那就新建一个marker图层,然后在function addPop()里边加一段,加完以后就是:

function addPop(a)
        {
            var lonlat = map.getLonLatFromPixel(new SuperMap.Pixel(a.xy.x,a.xy.y));
            var newHtml = "<br>位置坐标:"+ "lon="+ lonlat.lon + "," + "lat="+ lonlat.lat;
            function addData(){   
      var size = new SuperMap.Size(44,33);
               var offset = new SuperMap.Pixel(-(size.w/2), -size.h);
               var icon = new SuperMap.Icon('../theme/images/marker.png', size, offset);
               marker =new SuperMap.Marker(new SuperMap.LonLat(lonlat.lon,lonlat.lat),icon) ;
               markerlayer.addMarker(marker);
   }
   addData();   
            var popwin = new SuperMap.Popup.FramedCloud("1",
            marker.getLonLat(),
            new SuperMap.Size(80,20),
            newHtml,
            null,
            false,
            null);
            map.addPopup(popwin);
        }

能否给它一个点击事件,让他在点击某个图标的时候同时消失被点击的那个图标跟弹框

marker支持点击事件,

                marker.events.on({

                   "click":function()

                });

可以做一个判断

            if(this.icon.url == '../theme/images/marker.png'){          

                markerlayer.removeMarker(this);

                framed.destroy();//销毁弹窗

            }

(代码我没调试,大致思路就是这样)
...