Hi,

    I am working maps. I am displaying different locations using
marker. When i tap on the marker i can be to display a popup which
will display always on the top screen, but how can i display exactly
on the top of marker...

here is my ItemizedOverlay Class..

private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
                private List<OverlayItem> items = new ArrayList<OverlayItem>();
                private Drawable marker = null;
                private PopupPanel panel = new PopupPanel(R.layout.popup);
                
                public SitesOverlay(Drawable marker) {
                        super(marker);
                        this.marker = marker;
                        for (int i = 0; i < dealersDataList.size(); i++) {
                                items.add(new OverlayItem(getPoint(
                                                
Double.parseDouble(dealersDataList.get(i).latitude),
                                                
Double.parseDouble(dealersDataList.get(i).longitude)), ""
                                                + dealersDataList.get(i).id, "" 
+ dealersDataList.get(i).name));

                        }
                        populate();
                }
        
                @Override
                public void draw(Canvas canvas, MapView mapView, boolean 
shadow) {
                        super.draw(canvas, mapView, shadow);

                        boundCenterBottom(marker);
                }
                public boolean onTouchEvent(MotionEvent event, MapView mapView) 
{
                        // ---when user lifts his finger---
                        if (event.getAction() == 1) {

                                panel.hide();

                        }
                        return false;
        }

                @Override
                protected OverlayItem createItem(int i) {
                        return (items.get(i));
                }

                @Override
                protected boolean onTap(final int i) {
                        Log.d("", "");
                        OverlayItem item = getItem(i);
                        GeoPoint geo = item.getPoint();
                        Point pt = map.getProjection().toPixels(geo, null);
                        map.getController().setCenter(geo);
                        View view = panel.getView();
                        
                        view.setOnTouchListener(new OnTouchListener() {
                                public boolean onTouch(View v, MotionEvent 
event) {
                                        if(event.getAction() == 
MotionEvent.ACTION_UP){
                                        // System.out.println("YAHOOOOOOO 
"+dealersDataList.get(i).name);
                                        }
                                        return true;
                                }
                        });
                        //String message=""+ jsonValues.get(i).name +"\nBikes
:"+jsonValues.get(i).bikesAvailable+"
Slots:"+jsonValues.get(i).emptySlots;
                        //Toast.makeText(getApplicationContext(), message, 
Toast.LENGTH_LONG).show();

                        ((TextView) 
view.findViewById(R.id.longitude)).setText("Name :
"+dealersDataList.get(i).name);
                        ((TextView) 
view.findViewById(R.id.x)).setText("\nAddress :
"+dealersDataList.get(i).address+" Contact Number
:"+dealersDataList.get(i).phoneNum);
                        Button more = (Button) view.findViewById(R.id.more);
                        more.setOnClickListener(new OnClickListener() {
                                
                                @Override
                                public void onClick(View v) {
                                        System.out.println("YAHOOOOOOO 
"+dealersDataList.get(i).name);
                                        
                                }
                        });
                        panel.show(pt.y * 2 > map.getHeight());
                        setPanel(panel);
                        return false;
                }
                
                @Override
                public int size() {
                        return (items.size());
                }
                
        }
        
        private void setPanel(PopupPanel panel2) {
                // TODO Auto-generated method stub
                panel = panel2;
        }
        
        
        class PopupPanel {
                View popup;
                boolean isVisible = false;
                PopupPanel(int layout) {
                        ViewGroup parent = (ViewGroup) map.getParent();

                        popup = getLayoutInflater().inflate(layout, parent, 
false);

                        popup.setOnClickListener(new View.OnClickListener() {
                                public void onClick(View v) {
                                        hide();
                                }
                        });
                }

                View getView() {
                        return (popup);
                }

                void show(boolean alignTop) {
                        RelativeLayout.LayoutParams lp = new 
RelativeLayout.LayoutParams(
                                        
RelativeLayout.LayoutParams.WRAP_CONTENT,
                                        
RelativeLayout.LayoutParams.WRAP_CONTENT);

                        if (alignTop) {
                                lp.addRule(RelativeLayout.ALIGN_TOP);
                                lp.setMargins(20, height/4, 20, 0);
                        } else {
                                lp.addRule(RelativeLayout.ALIGN_TOP);
                                lp.setMargins(20, height/4, 20, 0);
                        }

                        hide();
                        
                        map.addView(popup, lp);
                        //((ViewGroup) map.getParent()).addView(popup, lp);
                        isVisible = true;
                }

                void hide() {
                        if (isVisible) {
                                isVisible = false;
                                ((ViewGroup) 
popup.getParent()).removeView(popup);
                        }
                        
                }
                
                void forceHide() {
                        try{
                        ((ViewGroup) popup.getParent()).removeView(popup);
                        }catch(NullPointerException e){
                                
                        }
                }
        }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to