Сделайте графику кликабельной вместо создания новой графики на карте - PullRequest
0 голосов
/ 05 сентября 2018

Итак, у меня есть карта с 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, но таким образом маркер не добавляется, и щелчок по маркеру не обнаруживается ...

Как я мог это сделать?

Спасибо.

EDIT:

если я просто установлю SingleTapListener на карту в начале выполнения приложения вместо установки моего MapOnTouchListener, маркеры будут созданы и доступны для нажатия:

mMapView.setOnSingleTapListener(new OnSingleTapListener() {
        @Override
        public void onSingleTap(float v, float v1) {
            mMapView.createIcon(v,v1);
        }
    });

После этого, нажав кнопку, я установил MapOnTouchListener, потому что мне нужны другие функции (создать конверт и сохранить точки в этом конверте внутри массива). После этого я пытаюсь обнулить MapOnTouchListener, и после этого установить singleTapListener как в начале выполнения ... и маркеры созданы, но не могут быть нажаты !!

...