怎么给地图添加点击事件?

1 投票
我想要在点击(地图点击事件)地图的时候,获取当前点击的坐标,添加标签,请问该怎么写代码,我写了好几种都实现不了。
8月 7, 2017 分类:  3206次浏览 | 用户: 吕峥嵘 初出茅庐 (56 分)

1个回答

0 投票

1.监听地图的点击事件,map.events.on({"click":function(e){console.log(e);}});

2.返回的参数里面就包含了你点击的坐标像素。

3.使用getLonLatFromPixel方法将相对地图div左上角像素坐标转为当前地图坐标系对应的坐标

4.添加一个点对象,并且设置label样式即可

8月 7, 2017 用户: 郑雅琳 名扬四海 (1,600 分)
map.getLonLatFromPixel(e.x,e.y);是这样吗?但是这样返回的数组不是坐标系坐标啊。
以下类参考:http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/apidoc/files/SuperMap/Map-js.html#SuperMap.Map.getLonLatFromPixel
getLonLatFromPixel

getLonLatFromPixel: function (    px    )
根据相对于地图窗口左上角的像素位置,返回其在地图上的地理位置。依据当前baselayer转换成 lon/lat (经度/纬度)形式。

Parameters
px    {SuperMap.Pixel}
Returns
{SuperMap.LonLat} 指定地图窗口像素坐标所对应的地理位置LonLat对象。

参数是SuperMap.Pixel对象。
另外应该使用 xy属性,比如e.xy.x; xy属性是计算出的相对地图div左上角像素坐标。
map.events.on({"click":function(e){
            var pointText = map.getLonLatFromPixel(e.xy);
            var textPoint = new SuperMap.Geometry.Point(pointText.x,pointText.y);

我这有为啥获取不了
pointText = map.getLonLatFromPixel(e.xy.x,e.xy.y)

这样也不行
var pix = new SuperMap.Pixel(e.x,e.y);
var pointText = map.getLonLatFromPixel(pix.x,pix.y);
var textPoint = new SuperMap.Geometry.Point(pointText.x,pointText.y);

这样还是不行


xy属性才是相对地图左上角的像素坐标,建议养成使用浏览器进行调试的习惯,不确定的代码都先试下,不确定的返回值类型也断点或者console.log()看看结构,不要一口气写下去,容易出错且不好找出错的地方,增加工作量。

...