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

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

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

百度地图标注物弹出气泡

实现功能:点击标注物,弹出气泡,点击气泡跳转到另一个页面

气泡可以自定义,网上很多都需要draw这个函数,搞得那么复杂,好吧我承认自己水平不高.

overlay_pop.xml:

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">

android: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"/>

android: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"/>

MapActivity:

// 标注物资源

private Drawable driverMarker = null;

privateint lat;

privateint lon;

private View popView;// 气泡

privateint x;

privateint y;

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

driverMarker = getResources().getDrawable(R.drawable.paopao);

// 初始化view

initView();

}

privatevoid initView() {

// 地图view

mapview = (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() {

@Override

publicvoid onMapMoveFinish() {

Log.i("data", "onMapMoveFinish");

// 用于监听,zoom级别是否发生改变

ZoomLevelLisenter();

}

@Override

publicvoid onMapAnimationFinish() {

Log.i("data", "onMapAnimationFinish");

// 用于监听,zoom级别是否发生改变

ZoomLevelLisenter();

}

@Override

publicvoid onGetCurrentMap(Bitmap arg0) {

}

@Override

publicvoid 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(https://www.doczj.com/doc/3e3298672.html,yout.overlay_pop, null);

mapview.addView(popView, new https://www.doczj.com/doc/3e3298672.html,youtParams(

https://www.doczj.com/doc/3e3298672.html,youtParams.WRAP_CONTENT,

https://www.doczj.com/doc/3e3298672.html,youtParams.WRAP_CONTENT, 0, -x,

https://www.doczj.com/doc/3e3298672.html,youtParams.BOTTOM_CENTER));

popView.setVisibility(View.GONE);

}

/**

* 司机图层

*/

privateclass DriverOverlay extends ItemizedOverlay {

public ListmGeoList =

new ArrayList();

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() {

@Override

publicvoid onClickedPopup(int index) {

if (null == mToast)

mToast = Toast.makeText(mContext, "popup item :"

+ index + " is clicked.",

Toast.LENGTH_SHORT);

else

mToast.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 drivers = (ArrayList) Cache.drivers;

mapview.updateViewLayout(popView,

new https://www.doczj.com/doc/3e3298672.html,youtParams(

LayoutParams.WRAP_CONTENT,

LayoutParams.WRAP_CONTENT,

mGeoList.get(index).getPoint(), 0, -x,

https://www.doczj.com/doc/3e3298672.html,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 () {

//这里是点击跳转

@Override

publicvoid 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;

}

@Override

protected OverlayItemcreateItem(int i) {

return mGeoList.get(i);

}

@Override

publicint size() {

return mGeoList.size();

}

publicvoid addItem(OverlayItem item) {

mGeoList.add(item);

populate();

}

publicvoid removeItems() {

mGeoList.clear();

populate();

}

}

相关主题
文本预览
相关文档 最新文档