所以,我有一张带有 MapOnTouchListener 的地图。我已经覆盖了 OnSingleTap 方法(allPoints 是一个数组,其中所有标记都添加了与此问题功能无关的所有标记):
@Override
public boolean onSingleTap(MotionEvent point) {
Point mapPoint=view.toMapPoint(point.getX(), point.getY());
new GeocoderAsynckTask(mapPoint,view).execute(mapPoint);
SpatialReference sp = SpatialReference.create(SpatialReference.WKID_WGS84);
Point p1Done=(Point) GeometryEngine.project(mapPoint, mvHelper.getMapView().getSpatialReference(), sp);
allPoints.add(p1Done);
return super.onSingleTap(point);
}
GeoCoderAsyncTask 将点的坐标转换为地址,并向地图添加标记。地理编码完成得恰到好处,我得到了我的地址,并在 PostExecute 方法中将标记添加到地图中:
protected void onPostExecute(String address) {
mProgressDialog.dismiss();
Toast.makeText(ctx,address,Toast.LENGTH_LONG).show();
SpatialReference sp = SpatialReference.create(SpatialReference.WKID_WGS84);
Point p1Done=(Point) GeometryEngine.project(point, mvHelper.getMapView().getSpatialReference(), sp);
mvHelper.addMarkerGraphic(p1Done.getY(), p1Done.getX(), "Location", address, android.R.drawable.ic_menu_myplaces, null, false, 1);
}
问题是,我希望标记是可点击的,但如果我点击它们,就会添加另一个标记。我试图使 MapOnTouchListener 无效,但是那样,没有添加标记,也没有检测到单击标记...
我怎么能做到这一点?
谢谢你。
编辑:
如果我只是在应用程序执行开始时在地图上设置一个 SingleTapListener 而不是设置我的 MapOnTouchListener,则会创建标记并且可以单击:
mMapView.setOnSingleTapListener(new OnSingleTapListener() {
@Override
public void onSingleTap(float v, float v1) {
mMapView.createIcon(v,v1);
}
});
之后,通过单击一个按钮,我设置了 MapOnTouchListener,因为我需要另一个功能(创建一个信封并将该信封中的点存储在一个数组中)。之后,我尝试使 MapOnTouchListener 无效,然后将 singleTapListener 设置为在执行开始时...并创建标记,但无法单击!