首页 / 浏览问题 / 移动GIS / 问题详情
imobile addCallout后,点击地图空白区域隐藏
15EXP 2022年01月12日
产品:imobile 10i 1020

点击DynamicPoint后展示callout,想要在点击地图空白区域时隐藏callout

请问通过什么方法实现,没找到地图的相关点击事件

1个回答

您好,可以通过地图控件MapControl的手势监听器来实现:setGestureDetector(android.view.GestureDetector gsDetector)
9,197EXP 2022年01月12日

在点击DynamicPoint时也会回调GestureDetector中的onSingleTapUp,会跟DynamicPoint的

setOnClickListenner方法一起回调,请问有方案在点击地图时判定点击的是DynamicPoint吗?

如果你是想点击·动态图层的对象可以直接使用动态对象的点击事件,DynamicElement.OnClickListener
我是在点击DynamicPoint时展示callout,用的DynamicElement.OnClickListener,

然后在点击地图没有动态图层的部分时去隐藏掉callout,是用的callout,setGestureDetector(android.view.GestureDetector gsDetector)

目前是点击DynamicPoint时两个都会回调,会导致callout展示之后立即隐藏了.

所以有没有方案可以判定用户点击的没有动态图层的部分.
您那边动态图层的范围和地图的范围是一致的吗?你可以在空白处点击的时候在手势监听器中查询当前点击的位置是否在地图数据范围内,如果是范围外就不显示callout。可以自己制作一个地图的范围数据,然后用datasetvector.query方法做空间查询
衍生出一个问题,请问api有没有屏幕坐标转经纬度坐标的方法

map类中有一个屏幕像素坐标转为地图坐标的方法,pixelToMap(Point point),如果地图是投影坐标系可以通过coordsystranslator类转换坐标

...