2

I want to put marker on image like Google map, with functionality like zooming,scrolling of image,dynamically adding of marker on image and marker drag & drop on image.

Marker can not be move from there position when image gets zoom. On marker click, dialog will open to show its information

Also, I want the x,y position of marker on image, so that next time I can place marker directly to that position.

Here is my xml :

        <ScrollView
            android:id="@+id/imageOuterScrollView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scrollbars="vertical">

            <HorizontalScrollView
                android:id="@+id/ImageHorizontalScrollView"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

                <RelativeLayout
                    android:id="@+id/markerAndLoadedImageView"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

            <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView 
                android:id="@+id/loadedImageFromServer"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true">
            </com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView>


                </RelativeLayout>
            </HorizontalScrollView>
        </ScrollView>

Java code :

private void addNewMarker(@DrawableRes int resid, float xCoordinates, float yCoordinates, String pinID) {

    image = new ImageView(getActivity());
    image.setBackgroundResource(resid);
    markerAndLoadedImageView.addView(image);

    image.setX(xCoordinates);
    image.setY(yCoordinates);
}

private View.OnTouchListener onTouchListener() {

    return new View.OnTouchListener() {
        @SuppressLint("ClickableViewAccessibility")
        @Override
        public boolean onTouch(View view, MotionEvent event) {

            mSitePlanImageHorizontalScrollView.requestDisallowInterceptTouchEvent(true);
            mSitePlanImageOuterScrollView.requestDisallowInterceptTouchEvent(true);
            final int x = (int) event.getRawX();
            final int y = (int) event.getRawY();
            switch (event.getAction() & MotionEvent.ACTION_MASK) {
                case MotionEvent.ACTION_DOWN:
                    RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams)
                            view.getLayoutParams();
                    xDelta = x - lParams.leftMargin;
                    yDelta = y - lParams.topMargin;
                    pressStartTime = System.currentTimeMillis();
                    pressedX = event.getX();
                    pressedY = event.getY();
                    break;
                case MotionEvent.ACTION_UP:
                    long pressDuration = System.currentTimeMillis() - pressStartTime;
                    Utility.printLog("pressDuration", "pressDuration" + pressDuration);

                    break;

                case MotionEvent.ACTION_MOVE:
                    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
                            .getLayoutParams();
                    layoutParams.leftMargin = x - xDelta;
                    layoutParams.topMargin = y - yDelta;
                    layoutParams.rightMargin = 0;
                    layoutParams.bottomMargin = 0;
                    view.setLayoutParams(layoutParams);
                    break;

            }
            Utility.printLog("POINTS", "POINTS : X:" + String.valueOf(x));
            Utility.printLog("POINTS", "POINTS : Y:" + String.valueOf(y));
            XPoint = x;
            YPoint = y;
            mMainParentProjectListLayout.invalidate();

            return true;
        }
    };
}

I have use below library for zooming :

https://github.com/davemorrissey/subsampling-scale-image-view

I am able to put marker on image, but I am not getting exact position of marker on image so that I will put marker to that particular position. Also, marker click and drag & drop functionality are not smooth as required.

Can anyone help me, thanks in advance.

Sorry for the English :)

0 Answers0