Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9227695
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 18, 20262026-06-18T05:08:35+00:00 2026-06-18T05:08:35+00:00

I am creating Google map Current location Balloon overlay. I used android-mapviewballoons this code

  • 0

I am creating Google map Current location Balloon overlay.

I used android-mapviewballoons this code to show balloon.

Here Current location display is working. When i click on marker, error will come(BalloonOverlayView 57,38 lines and BalloonItemizedOverlay 87,188,76 lines ).

Where is error i know but i am no understanding that part, Any one please help me

This is LogCat error

02-01 05:09:31.606: W/Trace(1250): Unexpected value from nativeGetEnabledTags: 0
02-01 05:09:31.636: I/System.out(1250): 6666666666666
02-01 05:09:31.636: I/System.out(1250): 77777777
02-01 05:09:31.646: I/System.out(1250): 7777888888
02-01 05:09:31.656: I/System.out(1250): 33333333
02-01 05:09:31.756: I/System.out(1250): 1111111
02-01 05:09:31.756: W/Trace(1250): Unexpected value from nativeGetEnabledTags: 0
02-01 05:09:31.756: E/InputEventReceiver(1250): Exception dispatching input event.
02-01 05:09:31.766: E/MessageQueue-JNI(1250): Exception in MessageQueue callback: handleReceiveCallback
02-01 05:09:31.836: D/dalvikvm(1250): GC_CONCURRENT freed 275K, 11% free 3508K/3904K, paused 35ms+27ms, total 163ms
02-01 05:09:31.926: E/MessageQueue-JNI(1250): java.lang.NullPointerException
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.sygnet.locationingooglemap.BalloonOverlayView.setupView(BalloonOverlayView.java:57)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.sygnet.locationingooglemap.BalloonOverlayView.<init>(BalloonOverlayView.java:38)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.sygnet.locationingooglemap.BalloonItemizedOverlay.createBalloonOverlayView(BalloonItemizedOverlay.java:87)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.sygnet.locationingooglemap.BalloonItemizedOverlay.createAndDisplayBalloonOverlay(BalloonItemizedOverlay.java:188)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.sygnet.locationingooglemap.BalloonItemizedOverlay.onTap(BalloonItemizedOverlay.java:76)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:358)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.google.android.maps.GestureDetector.onTouchEvent(GestureDetector.java:562)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.google.android.maps.MapView.onTouchEvent(MapView.java:685)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.View.dispatchTouchEvent(View.java:7239)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2168)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1903)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at  android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.app.Activity.dispatchTouchEvent(Activity.java:2410)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.View.dispatchPointerEvent(View.java:7419)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.os.MessageQueue.nativePollOnce(Native Method)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.os.MessageQueue.next(MessageQueue.java:125)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.os.Looper.loop(Looper.java:124)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at android.app.ActivityThread.main(ActivityThread.java:5039)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at java.lang.reflect.Method.invokeNative(Native Method)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at java.lang.reflect.Method.invoke(Method.java:511)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-01 05:09:31.926: E/MessageQueue-JNI(1250):   at dalvik.system.NativeStart.main(Native Method)
02-01 05:09:32.006: D/AndroidRuntime(1250): Shutting down VM
02-01 05:09:32.006: W/dalvikvm(1250): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
02-01 05:09:32.096: E/AndroidRuntime(1250): FATAL EXCEPTION: main
02-01 05:09:32.096: E/AndroidRuntime(1250): java.lang.NullPointerException
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.sygnet.locationingooglemap.BalloonOverlayView.setupView(BalloonOverlayView.java:57)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.sygnet.locationingooglemap.BalloonOverlayView.<init>(BalloonOverlayView.java:38)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.sygnet.locationingooglemap.BalloonItemizedOverlay.createBalloonOverlayView(BalloonItemizedOverlay.java:87)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.sygnet.locationingooglemap.BalloonItemizedOverlay.createAndDisplayBalloonOverlay(BalloonItemizedOverlay.java:188)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.sygnet.locationingooglemap.BalloonItemizedOverlay.onTap(BalloonItemizedOverlay.java:76)
 02-01 05:09:32.096: E/AndroidRuntime(1250):    at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453)
 02-01 05:09:32.096: E/AndroidRuntime(1250):    at com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:358)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.google.android.maps.GestureDetector.onTouchEvent(GestureDetector.java:562)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.google.android.maps.MapView.onTouchEvent(MapView.java:685)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.View.dispatchTouchEvent(View.java:7239)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2168)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1903)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at   android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.app.Activity.dispatchTouchEvent(Activity.java:2410)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901)
 02-01 05:09:32.096: E/AndroidRuntime(1250):    at android.view.View.dispatchPointerEvent(View.java:7419)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
 02-01 05:09:32.096: E/AndroidRuntime(1250):    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.os.MessageQueue.nativePollOnce(Native Method)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.os.MessageQueue.next(MessageQueue.java:125)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.os.Looper.loop(Looper.java:124)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at android.app.ActivityThread.main(ActivityThread.java:5039)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at java.lang.reflect.Method.invokeNative(Native Method)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at java.lang.reflect.Method.invoke(Method.java:511)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-01 05:09:32.096: E/AndroidRuntime(1250):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
 02-01 05:09:32.096: E/AndroidRuntime(1250):    at dalvik.system.NativeStart.main(Native Method)

This is BalloonItemizedOverlay.java

 public abstract class BalloonItemizedOverlay<Item extends OverlayItem> extends ItemizedOverlay<Item> {

private static final long BALLOON_INFLATION_TIME = 300;
private static Handler handler = new Handler();

private MapView mapView;
private BalloonOverlayView<Item> balloonView;
private View clickRegion;
private View closeRegion;
private int viewOffset;
final MapController mc;
private Item currentFocusedItem;
private int currentFocusedIndex;

private boolean showClose = true;
private boolean showDisclosure = false;
private boolean snapToCenter = true;
private static boolean isInflating = false;

public BalloonItemizedOverlay(Drawable defaultMarker, MapView mapView) {
    super(defaultMarker);
    this.mapView = mapView;
    viewOffset = 0;
    mc = mapView.getController();
}

public void setBalloonBottomOffset(int pixels) {
    viewOffset = pixels;
}
public int getBalloonBottomOffset() {
    return viewOffset;
}

protected boolean onBalloonTap(int index, Item item) {
    return false;
}

protected void onBalloonOpen(int index) {}

@Override
public final boolean onTap(int index) {

    handler.removeCallbacks(finishBalloonInflation);
    isInflating = true;
    handler.postDelayed(finishBalloonInflation, BALLOON_INFLATION_TIME);
    System.out.println("6666666666666");
    currentFocusedIndex = index;
    currentFocusedItem = createItem(index);
    setLastFocusedIndex(index);

    onBalloonOpen(index);
    createAndDisplayBalloonOverlay();

    if (snapToCenter) {
        mc.animateTo(currentFocusedItem.getPoint());
    }

    return true;
}

protected BalloonOverlayView<Item> createBalloonOverlayView() {
    System.out.println("77777777");
    return new BalloonOverlayView<Item>(getMapView().getContext(), getBalloonBottomOffset());
}

protected MapView getMapView() {
    System.out.println("7777888888");
    return mapView;

}

public void hideBalloon() {
    if (balloonView != null) {
        balloonView.setVisibility(View.GONE);
        System.out.println("888888");
    }
    currentFocusedItem = null;
}

private void hideOtherBalloons(List<Overlay> overlays) {

    for (Overlay overlay : overlays) {
        if (overlay instanceof BalloonItemizedOverlay<?> && overlay != this) {
            ((BalloonItemizedOverlay<?>) overlay).hideBalloon();
            System.out.println("88886666666666688");
        }
    }       
}

public void hideAllBalloons() {
    if (!isInflating) {
        List<Overlay> mapOverlays = mapView.getOverlays();
        if (mapOverlays.size() > 1) {
            hideOtherBalloons(mapOverlays);
        }
        hideBalloon();
    }
}

private OnTouchListener createBalloonTouchListener() {
    return new OnTouchListener() {

        double startX;
        double startY;

        public boolean onTouch(View v, MotionEvent event) {

//              View l =  ((View) v.getParent()).findViewById(R.id.balloon_main_layout);
            Drawable d = v.getBackground();

            //Event Action Down
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                int[] states = {android.R.attr.state_pressed};
                if (d.setState(states)) {
                    d.invalidateSelf();
                    System.out.println("12122121212");
                }
                startX = event.getX();
                startY = event.getY();
                System.out.println("1111222211112222");
                return true;
            } 

            //Event Action Up
            else if (event.getAction() == MotionEvent.ACTION_UP) {
                int newStates[] = {};
                if (d.setState(newStates)) {
                    d.invalidateSelf();
                    System.out.println("0000011111");
                }
                if (Math.abs(startX - event.getX()) < 40 && Math.abs(startY - event.getY()) < 40 ) {
                    // call overridden method
                    onBalloonTap(currentFocusedIndex, currentFocusedItem);
                    System.out.println("12345678");
                }
                return true;
            } else {
                return false;
            }               
        }
    };
}

@Override
public Item getFocus() {
    return currentFocusedItem;
}

@Override
public void setFocus(Item item) {
    super.setFocus(item);   
    currentFocusedIndex = getLastFocusedIndex();
    currentFocusedItem = item;
    if (currentFocusedItem == null) {
        hideBalloon();
    } else {
        createAndDisplayBalloonOverlay();
    }   
}

private boolean createAndDisplayBalloonOverlay(){
    boolean isRecycled;
    if (balloonView == null) {
        balloonView = createBalloonOverlayView();
        clickRegion = (View) balloonView.findViewById(R.id.balloon_inner_layout);

        clickRegion.setOnTouchListener(createBalloonTouchListener());
        closeRegion = (View) balloonView.findViewById(R.id.balloon_close);
        if (closeRegion != null) {
            if (!showClose) {
                closeRegion.setVisibility(View.GONE);
                System.out.println("aaaaaaaa");
            } else {
                closeRegion.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        hideBalloon();  
                        System.out.println("bbbbbbb");
                    }
                });
            }
        }

        if (showDisclosure && !showClose) {
            View v = balloonView.findViewById(R.id.balloon_disclosure);
            if (v != null) {
                v.setVisibility(View.VISIBLE);
                System.out.println("cccccccc");
            }
        }
        isRecycled = false;
    } 
    else {
        isRecycled = true;
    }

    balloonView.setVisibility(View.GONE);

    List<Overlay> mapOverlays = mapView.getOverlays();
    if (mapOverlays.size() > 1) {
        hideOtherBalloons(mapOverlays);
    }

    if (currentFocusedItem != null)
        balloonView.setData(currentFocusedItem);

    GeoPoint point = currentFocusedItem.getPoint();
    MapView.LayoutParams params = new MapView.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, point,
            MapView.LayoutParams.BOTTOM_CENTER);
    params.mode = MapView.LayoutParams.MODE_MAP;

    balloonView.setVisibility(View.VISIBLE);
    System.out.println("dddddddd");
    if (isRecycled) {
        balloonView.setLayoutParams(params);
    } 
    else {
        mapView.addView(balloonView, params);
    }

    return isRecycled;
} 

public void setShowClose(boolean showClose) {
    this.showClose = showClose;
}

public void setShowDisclosure(boolean showDisclosure) {
    this.showDisclosure = showDisclosure;
}

public void setSnapToCenter(boolean snapToCenter) {
    this.snapToCenter = snapToCenter;
}

public static boolean isInflating() {
    return isInflating;
}

private static Runnable finishBalloonInflation = new Runnable() {
    public void run() {
        isInflating = false;
    }
};

}

This is BalloonOverlayView.java

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout  {

LinearLayout layout;
private TextView title;
MainActivity main;
private CharSequence tvLocation;


public BalloonOverlayView(Context context, int balloonBottomOffset) {

    super(context);

    setPadding(10, 0, 10, balloonBottomOffset);

    layout = new LimitLinearLayout(context);
    layout.setVisibility(VISIBLE);

    setupView(context, layout);

    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.gravity = Gravity.NO_GRAVITY;

    addView(layout, params);
}

protected void setupView(Context context, ViewGroup parent) {
    try {
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.balloon_overlay, parent);
    title = (TextView) v.findViewById(R.id.balloon_item_title);
    System.out.println("00000000000");
    }
    catch(Exception e)
    {
        System.out.println("1111111");
        title.setText(tvLocation);
    }

//      title.setText(tvLocation);
}

public void setData(Item item) {
    layout.setVisibility(VISIBLE);
    setBalloonData(item, layout);
    System.out.println("1113333");
}

protected void setBalloonData(Item item, ViewGroup parent) {
    if (item.getTitle() != null) {
        title.setVisibility(VISIBLE);
        title.setText(item.getTitle());
        title.setText(tvLocation);

        System.out.println("222222222");
    } else {
        title.setText("");
        title.setVisibility(GONE);
        System.out.println("111222222");
    }
}

private class LimitLinearLayout extends LinearLayout {

    private static final int MAX_WIDTH_DP = 280;

    final float SCALE = getContext().getResources().getDisplayMetrics().density;

    public LimitLinearLayout(Context context) {
        super(context);
        System.out.println("33333333");
    }

    public LimitLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        System.out.println("444444");
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int mode = MeasureSpec.getMode(widthMeasureSpec);
        int measuredWidth = MeasureSpec.getSize(widthMeasureSpec);
        int adjustedMaxWidth = (int)(MAX_WIDTH_DP * SCALE + 0.5f);
        int adjustedWidth = Math.min(measuredWidth, adjustedMaxWidth);
        int adjustedWidthMeasureSpec = MeasureSpec.makeMeasureSpec(adjustedWidth, mode);
        System.out.println("555555555");
        super.onMeasure(adjustedWidthMeasureSpec, heightMeasureSpec);
    }
}

}

This is balloon_overlay.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/balloon_main_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/balloon_overlay_bg_selector"
android:minWidth="200dip"
android:orientation="horizontal"
android:paddingBottom="25dip"
android:paddingLeft="10dip"
android:paddingRight="0dip"
android:paddingTop="0dip" >

<LinearLayout
    android:id="@+id/balloon_inner_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="6dip"
    android:layout_weight="1" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:minHeight="40dip"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/balloon_item_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/primary_text_light"
            android:textSize="@string/txtsize"
            android:text="" />

    </LinearLayout>
    <ImageView
        android:id="@+id/balloon_disclosure"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="center_vertical"
        android:src="@drawable/balloon_disclosure"
        android:visibility="gone" />

</LinearLayout>

<ImageView
    android:id="@+id/balloon_close"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingBottom="10dip"
    android:paddingLeft="10dip"
    android:paddingRight="5dip"
    android:paddingTop="5dip"
    android:src="@drawable/balloon_overlay_close" />

</LinearLayout>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-18T05:08:36+00:00Added an answer on June 18, 2026 at 5:08 am

    use this code , it’s working fine for me :

    public class CurrentLocationOverlay extends ItemizedOverlay<OverlayItem>{
    
        private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();
        private MapView mapView;
        private Context context;
    
        //pin point drawable
        private Drawable marker;
    
        //balloon background
        private Drawable viewDrawable;
    
        private LinearLayout viewBubble;
    
        public CurrentLocationOverlay(Drawable defaultMarker) {
            super(boundCenterBottom(defaultMarker));
        }
    
        /**
         * 
         * @param defaultMarker
         * @param activity
         * @param context
         * @param mapView
         */
        public CurrentLocationOverlay(Drawable defaultMarker , Context context, MapView mapView) {
            this(boundCenterBottom(defaultMarker));
            this.mapView = mapView;
            this.context = context;
            marker = defaultMarker;
            growPopUpAnim = AnimationUtils.loadAnimation(context, R.anim.grow_from_bottom);
            viewDrawable =  context.getResources().getDrawable(R.drawable.currlocpopup);
        }
    
    
        @Override
        protected OverlayItem createItem(int i) {
            return mapOverlays.get(i);
        }
    
        @Override
        public int size() {
            return mapOverlays.size();
        }
    
    
        /**
         * 
         * @param gp
         * @param title
         * @param msg
         */
        public void addOverlay(GeoPoint gp , String title , String msg) {
            OverlayItem overlay = new OverlayItem(gp, title, msg); 
            mapOverlays.add(overlay);
            this.populate();
        }
    
    
        @Override
        protected boolean onTap(int index) {
            final int position = index;
                Log.v("Overlay index", "" + position);
                GeoPoint p = mapOverlays.get(index).getPoint();
                addBubble(p , position);
            return true;
        }
    
    
    
        /**
         * 
         * @param point
         * @param mapView
         */
        private void addBubble(GeoPoint point , int index) {
            dimissbubble(mapView);
            // if there isn't any bubble on the screen enter
            if (viewBubble == null) {
                viewBubble = new LinearLayout(context);
                viewBubble.bringToFront();
                viewBubble.setBackgroundDrawable(viewDrawable);
    
                TextView tv = new TextView(context);
                tv.setText(mapOverlays.get(index).getTitle());
                tv.setTextSize(16);
                tv.setTextColor(Color.WHITE);
                tv.setTypeface(null, Typeface.BOLD);
    
    
                viewBubble.setGravity(Gravity.CENTER_HORIZONTAL);
    
                viewBubble.setPadding(10, 10, 10, 10);
    
                viewBubble.addView(tv);
    
                MapView.LayoutParams mvlp = new MapView.LayoutParams(
                        MapView.LayoutParams.WRAP_CONTENT,
                        MapView.LayoutParams.WRAP_CONTENT, point,
                        0,  -marker.getIntrinsicHeight(),
                        MapView.LayoutParams.BOTTOM_CENTER);
    
                mvlp.mode = MapView.LayoutParams.MODE_MAP;
    
                mapView.addView(viewBubble, mvlp);
                viewBubble.startAnimation(growPopUpAnim);
    
                // And the event.
                viewBubble.setOnClickListener(new OnClickListener() {
                    // When we touch the bubble it is removed. And make null
                    // viewBubble to reuse it.
                    @Override
                    public void onClick(View v) {
                        mapView.removeView(viewBubble);
                        viewBubble = null;
                    }
                });
            }
        }
    
    
        /**
         * 
         * @param mapView
         */
        private void dimissbubble(MapView mapView) {
            if (viewBubble != null) {
                mapView.removeView(viewBubble);
                viewBubble = null;
            }
        }
    }
    

    add this :

     GeoPoint p = new GeoPoint(
                            (int) (location.getLatitude() * 1E6), 
                            (int) (location.getLongitude() * 1E6));
    
    CurrentLocationOverlay currentLocationOverlay = new  CurrentLocationOverlay(mDrawable,context, mapView);
    currentLocationOverlay.addOverlay(p ,"Current Location" , "");
    mapView.getOverlays().add(currentLocationOverlay);
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am creating a google map in a script with the following code -
I followed Google's Map View tutorial from this link http://developer.android.com/resources/tutorials/views/hello-mapview.html I've done the first
I am creating a google map in order to display store locations of a
Creating a google map with store locations within 50 miles of user entered address.
I'm creating an asp.net page that uses the google map api. The page loads
I'm creating a map using Google Fusion Tables. It has several layers that are
I am creating a map using the new(ish) v3 of the Google Maps API
In google maps API v3, I'm creating my own custom map types by calling
I am busy with creating a Google map v3 site. If you have a
I'm creating a Google map mashup and am using SQL 2008. I will have

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.