Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用(3)

上一篇中,已经实现了对地图的一些基本的简单操作,现在要实现以下几个功能:

a 在百度地图中间实现一个固定不动的View,类似快的打车软件地图中中间固定不动的View;

b 在地图中间固定不动的View上添加PopupWindow,实现随着地图移动,即时显示当前的位置信息;

c 在百度地图上添加覆盖物Marker与InfoWindow的点击事件,这里分别用3种不同的方式实现;

功能就这么点,开始代码实现:

1.在百度地图中间实现一个固定不动的View,类似快的打车软件地图中中间固定不动的CenterIcon

CenterIcon.javapublic class CenterIcon extends View {public static int w;public static int h;public static Bitmap mBitmap;public static MapView mMapView;public CenterIcon(Context context,MapView mMapView) {super(context);// 设置屏幕中心的图标mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.current_position);this.mMapView = mMapView;}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);// 获取屏幕中心的坐标w = mMapView.getWidth() / 2 – mBitmap.getWidth() / 2;h = mMapView.getHeight() / 2 ;canvas.drawBitmap(mBitmap, w, h, null);}}说明:CenterIcon继承View,在屏幕中心画出来,然后在BaseMapActivity中添加以下代码// 初始化屏幕中心CenterIcon centerIcon = new CenterIcon(this, mMapView);getWindow().addContentView(centerIcon,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

这样就实现了在地图中间(屏幕)有了一个固定不动的CenterIcon了。2.在地图中间固定不动的CenterIcon上添加PopupWindow,实现随着地图移动,即时显示当前的位置信息

a 初始化中间弹出窗:

/** * 初始化中间弹出窗 */public void initCenterAddrPop() {centerInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);centerPopView = centerInflater.inflate(R.layout.pop_map_centure, null,false);centerPopWindow = new PopupWindow(centerPopView,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false);// popwindow外面可touchcenterPopWindow.setOutsideTouchable(true);// 获取两个textviewlocationNameTextView = (TextView) centerPopView.findViewById(R.id.locationName);locationTipsTextView = (TextView) centerPopView.findViewById(R.id.locationTips);}

说明:pop_map_centure.xml 是我们自定义的布局,用来显示当前位置的地理信息。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:id="@+id/pop_home_layout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:background="@drawable/location_tips"android:gravity="center_vertical"android:maxWidth="1000.0dip"android:minWidth="40.0dip"android:orientation="horizontal" ><LinearLayoutandroid:layout_width="0dip"android:layout_height="wrap_content"android:layout_weight="4"android:gravity="left|center_vertical"android:orientation="vertical" ><TextViewandroid:id="@+id/locationName"android:layout_width="wrap_content"android:layout_height="0dip"android:layout_weight="1"android:text="浙江省杭州市余杭区余杭区仓前街道"android:textColor="#adadad"android:textSize="13sp" /><TextViewandroid:id="@+id/locationTips"android:layout_width="wrap_content"android:layout_height="0dip"android:layout_weight="1"android:text="浙江省杭州市余杭区余杭区仓前街道"android:textColor="#adadad"android:textSize="11sp" /></LinearLayout><ImageViewandroid:layout_width="18dp"android:layout_height="18dp"android:layout_margin="8dp"android:background="@drawable/location_expand"android:contentDescription="定位" /></LinearLayout>

b显示中间弹出窗,当然,我们需要实现百度地图移动别的时候显示它。

/** * 显示中间弹出窗 */public void showCenterAddrPop(Double latitude, Double longitude,String name, String address) {if (name == null || name.length() == 0) {locationNameTextView.setVisibility(View.GONE);} else {locationNameTextView.setVisibility(View.VISIBLE);locationNameTextView.setText(name);}locationTipsTextView.setText(address);// 设置中心弹出框显示位置// centerPopWindow.showAtLocation(callShopToSwitchButton,// Gravity.CENTER,// 0, -CenterIcon.mBitmap.getHeight());centerPopWindow.showAtLocation(mMapView, Gravity.CENTER, 0,-CenterIcon.mBitmap.getHeight());}c百度地图状态改变监听函数setOnMapStatusChangeListener。

只有这样才不会被“不可能”束缚,才能不断超越自我。

Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用(3)

相关文章:

你感兴趣的文章:

标签云: