android实现百度地图点击覆盖物(MyLocationOverlay)弹出自定义弹出窗口


一:增加覆盖物MyLocationOverlay

         MyLocationOverlay在普通的Overlay基础上进行了封装,可以更好的进行一个定位处理,例如方向。

       要想点击MyLocationOverlay触发一个事件,就需要继承MyLocationOverlay重写dispatchTap方法

public class LocationOverlay extends MyLocationOverlay{

	
	private ShipActivity sa;
	public LocationOverlay(MapView arg0,ShipActivity _s) {
		super(arg0);
		this.sa = _s;
	}
	
	
	@Override
	protected boolean dispatchTap() { //处理点击事件
		
		sa.openPopupOverlay(this);	
		return super.dispatchTap();
	}
}
      这里在构造函数传了地图所在类的对象过来,以便调用地图类的相应方法,显示出来详细信息框PopupOverlay

     

     把扩展的MyLocationOverlay增加到地图主类

    

private void addMyLocationOverlay()
    {
        myLocationOverlay = new LocationOverlay(mMapView,this); 
        new Message().showToast("come baby!", ShipActivity.this);
        LocationData locData = new LocationData();  
        //手动将位置源置为天安门  
        locData.latitude =39.9022; //百度纬度坐标  
        locData.longitude = 116.404; //百度经度坐标  
        locData.direction = 50.0f; // GPS定位时方向角度   round:0-360
        myLocationOverlay.enableCompass();//打开指南针  
        myLocationOverlay.setData(locData);  
                
        mMapView.getOverlays().add(myLocationOverlay);          
        mMapView.refresh();  

    }

二:显示出详细信息框PopupOverlay

        PopupOverlay很方便可以增加一个自定义的view到对话框中,

        当然也是可以进行view中按钮的事件处理,只需要先得到view在得到view中的按钮在绑定事件就可以了

public void openPopupOverlay(LocationOverlay _lo)
    {
        LocationData locData = _lo.getMyLocation();
        
        PopupOverlay pop = new PopupOverlay(mMapView,new PopupClickListener() {                  
            @Override  
            public void onClickedPopup(int index) {  
            	new Message().showToast("茂茂",ShipActivity.this);
            }  
         }); 
        
        GeoPoint p2 = new GeoPoint((int) ( locData.latitude * 1E6), (int) (locData.longitude * 1E6)); 
        
        //得到自定义view
        View popview = LayoutInflater.from(this).inflate(  
        		R.layout.popupoverlay, null);
        
        //通过自定义view得到按钮并绑定事件
        Button lookbut = (Button)popview.findViewById(R.id.lookbut);
        lookbut.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				new Message().showToast("点击查看", ShipActivity.this);
			}});
        
        Button surebut = (Button)popview.findViewById(R.id.surebut);
        surebut.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				new Message().showToast("点击确定", ShipActivity.this);
			}});
        
        pop.showPopup(popview, p2, 33);
    }

   


  

你可能感兴趣的:(android实现百度地图点击覆盖物(MyLocationOverlay)弹出自定义弹出窗口)