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

  • SEARCH
  • Home
  • 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 3784238
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 19, 20262026-05-19T11:20:49+00:00 2026-05-19T11:20:49+00:00

In my map application, I am displaying a set of overlays on a map.

  • 0

In my map application, I am displaying a set of overlays on a map. Whenever I tap on an overlay I need to display a popup, like this

Image of MapView with overlay popup

Can any one help me to sort out this?

  • 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-05-19T11:20:50+00:00Added an answer on May 19, 2026 at 11:20 am

    Yes it is possible you should design our self info window for display information over tap in map i am supply code to you if you are understand that please replay me.

    public class MapLocationOverlay  extends Overlay  {
    
        private boolean isNameAddHold=true;
    
         private Bitmap bitmap,bitCross,bitMoreInformation;
        int testX,testY,count=0;
        int infoWindowOffsetX,infoWindowOffsetY;
        public String name,address,argName,argAddress,argid;
        //  Store these as global instances so we don't keep reloading every time
        private Bitmap bubbleIcon, shadowIcon;
    
        private MapLocationViewer mapLocationViewer;
        double toLat, toLng;
    
        private Paint   innerPaint, borderPaint, textPaint;
        private boolean isRemovePriorPopup=false;
        private boolean temp=true,first=true, firstDraw = true;
        public boolean tempDefaule=true;
        public MoreInformation myMoreInformation;
        public PantryLocation location;
    
        //  The currently selected Map Location...if any is selected.  This tracks whether an information  
        //  window should be displayed & where...i.e. whether a user 'clicked' on a known map location
        private PantryLocation selectedMapLocation;  
    
        public MapLocationOverlay(MapLocationViewer mapLocationViewer,PantryLocation arglocation) {
    
            this.mapLocationViewer = mapLocationViewer;
            location=arglocation;
            bubbleIcon = BitmapFactory.decodeResource(mapLocationViewer.getResources(),R.drawable.bubble);
            shadowIcon = BitmapFactory.decodeResource(mapLocationViewer.getResources(),R.drawable.shadow);
            bitmap = BitmapFactory.decodeResource(mapLocationViewer.getResources(),R.drawable.infowindow);
            bitCross = BitmapFactory.decodeResource(mapLocationViewer.getResources(),R.drawable.crass);
            bitMoreInformation = BitmapFactory.decodeResource(mapLocationViewer.getResources(),R.drawable.more_informations_new);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent e, MapView mapView) {
            // TODO Auto-generated method stub
             if (e.getAction() == 0)
             {
                 this.tempDefaule=false;
             }
             if (e.getAction() == 1)
             {
                 this.tempDefaule=false;
             }
             if (e.getAction() == 2)
             {
                 this.tempDefaule=false;
             }
            return super.onTouchEvent(e, mapView);
        }       
    
        @Override
        public boolean onTap(GeoPoint p, MapView    mapView)  {
            //this.tempDefaule=false;
            //  Store whether prior popup was displayed so we can call invalidate() & remove it if necessary.
    
            //  Next test whether a new popup should be displayed
    
                selectedMapLocation = getHitMapLocation(mapView,p);
    
                mapView.invalidate();       
    
            //  Lastly return true if we handled this onTap()
            return selectedMapLocation != null;
        }
    
        @Override
        public void draw(Canvas canvas, MapView mapView, boolean shadow) {
    
            drawMapLocations(canvas, mapView, shadow);
            //this.tempDefaule=false;
            drawInfoWindow(canvas, mapView, shadow);
            //this.tempDefaule=false;
            }
    
        /**
         * Test whether an information balloon should be displayed or a prior balloon hidden.
         */
        private PantryLocation getHitMapLocation(MapView    mapView, GeoPoint   tapPoint) {
    
            //  Track which MapLocation was hit...if any
            PantryLocation hitMapLocation = null;
    
            RectF hitTestRecr = new RectF();
            Point screenCoords = new Point();
            ArrayList<PantryLocation> iterator =mapLocationViewer.getMapLocations();
            for(int i=0;i<iterator.size();i++) {       
                PantryLocation testLocation = iterator.get(i);
    
                //  Translate the MapLocation's lat/long coordinates to screen coordinates
                mapView.getProjection().toPixels(testLocation.getPoint(), screenCoords);
    
                // Create a 'hit' testing Rectangle w/size and coordinates of our icon
                // Set the 'hit' testing Rectangle with the size and coordinates of our on screen icon
                hitTestRecr.set(-bubbleIcon.getWidth()/2,-bubbleIcon.getHeight(),bubbleIcon.getWidth()/2,0);
                hitTestRecr.offset(screenCoords.x,screenCoords.y);
    
                //  Finally test for a match between our 'hit' Rectangle and the location clicked by the user
                mapView.getProjection().toPixels(tapPoint, screenCoords);
                //hitMapLocation = testLocation;
                if (hitTestRecr.contains(screenCoords.x,screenCoords.y)) {
                    hitMapLocation = testLocation;
                    first = true;
                    isNameAddHold = true;
                    break;
                }
            }
            testX=(int)screenCoords.x;
            testY=(int)screenCoords.y;
            //  Lastly clear the newMouseSelection as it has now been processed
            tapPoint = null;
            if(hitMapLocation==null && selectedMapLocation!=null)
            return selectedMapLocation; 
    
            return hitMapLocation;
    
        }
    
        private void drawMapLocations(Canvas canvas, MapView    mapView, boolean shadow) {
            int i=0;count++;
            ArrayList<PantryLocation> iterator =mapLocationViewer.getMapLocations();
            Point screenCoords = new Point();
            for(i=0;i<iterator.size();i++) {       
                PantryLocation location = iterator.get(i);
                mapView.getProjection().toPixels(location.getPoint(), screenCoords);
                //mapView.getController().setCenter(location.getPoint());
                if (shadow) {
                    //  Only offset the shadow in the y-axis as the shadow is angled so the base is at x=0; 
                    canvas.drawBitmap(shadowIcon, screenCoords.x, screenCoords.y - shadowIcon.getHeight(),null);
                } else {
                    canvas.drawBitmap(bubbleIcon, screenCoords.x - bubbleIcon.getWidth()/2, screenCoords.y - bubbleIcon.getHeight(),null);
                }
    
            }
    //      if(i==iterator.size()){
    //          this.tempDefaule=false;}
    if(tempDefaule==true)
    {
    
                PantryLocation location1 = this.location;
                //mapView.getProjection().toPixels(location.getPoint(), screenCoords);
                Point screenCoord = new Point();
                mapView.getController().setCenter(location1.getPoint());
                mapView.getController().setZoom(15);
            //  tempDefaule=false;
                    //mapView.getController().setCenter(location.getPoint());   
    
            }
    
                //tempDefaule=false;    
    }           //mapView.getProjection().toPixels(location.getPoint(), screenCoord);
                //canvas.drawBitmap(bubbleIcon, screenCoord.x - bubbleIcon.getWidth()/2, screenCoord.y - bubbleIcon.getHeight(),null);
                //mapView.invalidate();
    
    
        private void drawInfoWindow(Canvas canvas, MapView  mapView, boolean shadow) {
            //this.tempDefaule=false;
            if ( selectedMapLocation != null) {
                if ( shadow) {
                    //  Skip painting a shadow in this tutorial
                } else {
                    //  First determine the screen coordinates of the selected MapLocation
                    isRemovePriorPopup=true;
                    Point selDestinationOffset = new Point();
                    mapView.getProjection().toPixels(selectedMapLocation.getPoint(), selDestinationOffset);
    
                    //  Setup the info window with the right size & location
                    int INFO_WINDOW_WIDTH = 125;
                    int INFO_WINDOW_HEIGHT = 25;
                    RectF infoWindowRect = new RectF(0,0,100,20);   
                    RectF closeRect = new RectF(0,0,20,20); 
                     infoWindowOffsetX = selDestinationOffset.x-INFO_WINDOW_WIDTH/2;
                     infoWindowOffsetY = selDestinationOffset.y-INFO_WINDOW_HEIGHT-bubbleIcon.getHeight();
                     infoWindowRect.offset(infoWindowOffsetX+95,infoWindowOffsetY-45);
                     closeRect.offset(infoWindowOffsetX+160,infoWindowOffsetY-90);
                     Paint myPaintBlack=new Paint();
                        Paint myPaintWhite=new Paint();
    
                        myPaintWhite.setARGB(255, 255, 255, 255);
    
    
                    //  Draw inner info window
                    canvas.drawRoundRect(infoWindowRect, 5, 5, getInnerPaint());
    
                    //  Draw border for info window
                    canvas.drawRoundRect(infoWindowRect, 5, 5, getBorderPaint());
    
                    //  Draw the MapLocation's name
    
    
                    myPaintBlack.setColor(Color.BLACK);
                    myPaintBlack.setTextSize(20);
    
                    canvas.drawBitmap(bitmap, infoWindowOffsetX-50, infoWindowOffsetY-100,getInnerPaint());
                    if(isNameAddHold)
                    {
                    argid=selectedMapLocation.getID();
                    argName=selectedMapLocation.getName();
                    name=selectedMapLocation.getName();
                    toLat = selectedMapLocation.getLatitude();
                    toLng = selectedMapLocation.getLongitude();
                    if(name.length()>18)
                    name=selectedMapLocation.getName().substring(0,18)+"..";
                    argAddress=selectedMapLocation.getAddress();
                    address=selectedMapLocation.getAddress();
                    if(address.length()>30)
                    address=selectedMapLocation.getAddress().substring(0,30)+"..";
                    }
                    canvas.drawText(name,infoWindowOffsetX-45,infoWindowOffsetY-70,myPaintBlack);
                    myPaintBlack.setTextSize(13);
                    canvas.drawText(address,infoWindowOffsetX-45,infoWindowOffsetY-55,myPaintBlack);
    
                //  Draw inner info window
                    canvas.drawRoundRect(infoWindowRect, 5, 5, getInnerPaint());
    
                    //  Draw border for info window
                    canvas.drawRoundRect(infoWindowRect, 5, 5, getBorderPaint());
                    //  Draw the MapLocation's name
                    myPaintBlack.setColor(Color.CYAN);
                    myPaintBlack.setTextSize(11);
                    //canvas.drawText("Click for more info..",infoWindowOffsetX+105,infoWindowOffsetY-33,myPaintBlack);
                    canvas.drawBitmap(bitMoreInformation, infoWindowOffsetX+95, infoWindowOffsetY-45,getInnerPaint());
                    //canvas.drawBitmap(bitCross, infoWindowOffsetX+160, infoWindowOffsetY-90,getInnerPaint());
    
                }
            }
            if(isRemovePriorPopup)
            {
            if(((testX>(infoWindowOffsetX+95)&&testX<(infoWindowOffsetX+195)))&&(testY>(infoWindowOffsetY-45)&&testY<(infoWindowOffsetY-25)))
                {
                if(temp){
                    try
                    {
                        temp=false;
                        isNameAddHold=false;
                    isRemovePriorPopup=false;
                    Context context=mapLocationViewer.cn;
                    Toast.makeText(context, "Loading...", Toast.LENGTH_SHORT).show();
                    Intent intent=new Intent(context, MoreInformation.class);
                    intent.putExtra("Id",argid);
                    intent.putExtra("Name",argName);
                    intent.putExtra("Address",argAddress);
                    intent.putExtra("Latitude",toLat);
                    intent.putExtra("Longitude",toLng);
    
                    context.startActivity(intent);
    
                    }
                    catch (Exception ex)
                    {
                        Log.d("Redirected Error :", ex.getMessage());
                    }
            //canvas.drawText("This is for Testing",testX,testY,myPaintBlack);
                }}
                else if(((testX>(infoWindowOffsetX+160)&&testX<(infoWindowOffsetX+180)))&&(testY>(infoWindowOffsetY-90)&&testY<(infoWindowOffsetY-70)))
                {
    
                    if(isRemovePriorPopup)
                    {
                     isRemovePriorPopup=false;                  
                     selectedMapLocation=null;
                     draw(canvas, mapView, shadow);
                    // mapLocationViewer.setDZoom();
                    }
    
                }
            }
        }
    
        public Paint getInnerPaint() {
            if ( innerPaint == null) {
                innerPaint = new Paint();
                innerPaint.setARGB(225, 75, 75, 75); //gray
                innerPaint.setAntiAlias(true);
            }
            return innerPaint;
        }
    
        public Paint getBorderPaint() {
            if ( borderPaint == null) {
                borderPaint = new Paint();
                borderPaint.setARGB(255, 255, 255, 255);
                borderPaint.setAntiAlias(true);
                borderPaint.setStyle(Style.STROKE);
                borderPaint.setStrokeWidth(2);
            }
            return borderPaint;
        }
    
        public Paint getTextPaint() {
            if ( textPaint == null) {
                textPaint = new Paint();
                textPaint.setARGB(255, 255, 255, 255);
                textPaint.setAntiAlias(true);
            }
            return textPaint;
        }
    
    
    }
    

    In this code i have design a function draw infowindow

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

i am developing one application with map view i need display the weather depends
I am trying to display google map on my application.. For this I am
i am develop map application in which i have display Google map and overlay-item
We have developed map base application. We have implemented multi-threading for display data on
I want to build a desktop application - a map viewer , something like
In a map application i display markers on a map based on the visible
I am trying to develop a simple map application, which will display a map
i am working on a map application, in that i like to drop the
i am displaying some locations using Google map in my application, and displaying all
I'm writing a windows application which is displaying real time data on a map.

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.