当前位置:文档之家› android百度地图标注物弹出气泡

android百度地图标注物弹出气泡

百度地图标注物弹出气泡实现功能:点击标注物,弹出气泡,点击气泡跳转到另一个页面气泡可以自定义,网上很多都需要draw这个函数,搞得那么复杂,好吧我承认自己水平不高.overlay_pop.xml:<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/androi d"android:id="@+id/pop_qipao"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/paopao_bg_normal"android:orientation="vertical"android:paddingBottom="20dp"android:paddingLeft="5dp"android:paddingRight="5dp"android:paddingTop="5dp"><TextViewandroid:id="@+id/pop_driver_name"android:layout_width="fill_parent"android:layout_height="wrap_content"android:ellipsize="marquee"android:gravity="center_horizontal"android:singleLine="true"android:textColor="#ff646464"android:textSize="16sp"/><ImageViewandroid:id="@+id/pop_xingji"android:layout_width="wrap_content"android:layout_height="wrap_content"android:contentDescription="@string/grade"android:gravity="center_horizontal"android:src="@drawable/star5"/></LinearLayout>MapActivity:// 标注物资源private Drawable driverMarker = null;privateint lat;privateint lon;private View popView;// 气泡privateint x;privateint y;@Overrideprotectedvoid onCreate(Bundle savedInstanceState) {driverMarker = getResources().getDrawable(R.drawable.paopao);// 初始化viewinitView();}privatevoid initView() {// 地图viewmapview = (MapView) findViewById(R.id.bmapView);mapview.setClickable(true);mapview.setBuiltInZoomControls(true);// 地图控制器mapController = mapview.getController();GeoPoint point = new GeoPoint((int) (lat* 1e6), (int) (lon* 1e6));// 设置地图中心点mapController.setCenter(point);mapController.setZoom(zoomLevel);mapController.enableClick(true);// 地图监听器mapListener = new MKMapViewListener() {@Overridepublicvoid onMapMoveFinish() {Log.i("data", "onMapMoveFinish");// 用于监听,zoom级别是否发生改变ZoomLevelLisenter();}@Overridepublicvoid onMapAnimationFinish() {Log.i("data", "onMapAnimationFinish");// 用于监听,zoom级别是否发生改变ZoomLevelLisenter();}@Overridepublicvoid onGetCurrentMap(Bitmap arg0) {}@Overridepublicvoid onClickMapPoi(MapPoi arg0) {}};mapview.regMapViewListener(app.mBMapManager, mapListener);// 自己标注物myLocationOverlay = new MyLocationOverlay(mapview);myLocationOverlay.enableCompass();mapview.getOverlays().add(myLocationOverlay);// 司机标注物driverOverlay = new DriverOverlay(driverMarker, TabMapActivity.this);mapview.getOverlays().add(driverOverlay);//x,y为了控制气泡出现在标注物的位置x = driverMarker.getIntrinsicHeight();y = driverMarker.getIntrinsicWidth();//加载气泡上的布局popView = getLayoutInflater().inflate(yout.overlay_pop, null);mapview.addView(popView, new youtParams(youtParams.WRAP_CONTENT,youtParams.WRAP_CONTENT, 0, -x,youtParams.BOTTOM_CENTER));popView.setVisibility(View.GONE);}/*** 司机图层*/privateclass DriverOverlay extends ItemizedOverlay<OverlayItem> {public List<OverlayItem>mGeoList =new ArrayList<OverlayItem>();private Context mContext = null;private PopupOverlay pop = null;private Toast mToast = null;public DriverOverlay(Drawable marker, Context context) { super(marker);this.mContext = context;pop = new PopupOverlay(mapview, new PopupClickListener() {@Overridepublicvoid onClickedPopup(int index) {if (null == mToast)mToast = Toast.makeText(mContext, "popup item :"+ index + " is clicked.",Toast.LENGTH_SHORT);elsemToast.setText("popup item :" + index + " is clicked.");mToast.show();}});populate();}/*** 标注物单击事件*/protectedboolean onTap(finalint index) {// Toast.makeText(mContext, "你点击了" +// mGeoList.get(index).getSnippet(),// Toast.LENGTH_LONG).show();final List<DriverBean> drivers = (ArrayList<DriverBean>) Cache.drivers;mapview.updateViewLayout(popView,new youtParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,mGeoList.get(index).getPoint(), 0, -x,youtParams.BOTTOM_CENTER));popView.setVisibility(View.VISIBLE);RelativeLayoutpop_qipaoLinearLayout = (RelativeLayout) popView.findViewById(R.id.pop_qipao);TextViewpopView_driver_name = (TextView) popView.findViewById(R.id.pop_driver_name);TextViewpopView_qrcode = (TextView) popView.findViewById(R.id.pop_qrcode);ImageViewpop_driver_image=(ImageView)findViewById(R.id.pop_driver_image);String pop_driver_name = drivers.get(index).getName();String pop_qrcode = drivers.get(index).getQrcode();byte[] imageText = drivers.get(index).getImageText();if (null != imageText) {String url =ImageHelper.base64StringToImage(imageText, pop_qrcode);if (null != url&& !"".equals(url)) {Uri uri = Uri.parse(url);pop_driver_image.setImageURI(uri);}}popView_driver_name.setText(pop_driver_name);popView_qrcode.setText(pop_qrcode);pop_qipaoLinearLayout.setOnClickListener(new OnClickListener () {//这里是点击跳转@Overridepublicvoid onClick(View v) {Intent intent = new Intent(mContext, DriverDetails.class);HubObject.getInstance().setDriverBean(drivers.get(index));mContext.startActivity(intent);}});returnfalse;}publicboolean onTap(GeoPointpt, MapViewmapView) { if (pop != null) {pop.hidePop();}if (popView != null) {popView.setVisibility(View.GONE);}super.onTap(pt, mapView);returnfalse;}@Overrideprotected OverlayItemcreateItem(int i) {return mGeoList.get(i);}@Overridepublicint size() {return mGeoList.size();}publicvoid addItem(OverlayItem item) {mGeoList.add(item);populate();}publicvoid removeItems() {mGeoList.clear();populate();}}。

相关主题