BaiduMap SDK-点标记InfoWindow

目录

2 InfoWindow

2.1 InfoWindow类

2.1.1 传入BitmapDescriptor

2.1.2 传入View

2.2 InfoWindowClickListener


2 InfoWindow

2.1 InfoWindow类

在地图中显示一个信息窗口,可以设置一个View作为该窗口的内容,也可以设置一个 BitmapDescriptor 作为该窗口的内容。

2.1.1 传入BitmapDescriptor

public InfoWindow(BitmapDescriptor bd, LatLng position, int yOffset, InfoWindow.OnInfoWindowClickListener listener)

通过传入的 bitmap descriptor 构造一个 InfoWindow。

参数:

bd - InfoWindow 展示的bitmap

position - InfoWindow 显示的地理位置

yOffset - InfoWindow Y 轴偏移量

listener - InfoWindow 点击监听者

抛出:

java.lang.IllegalArgumentException - bitmapDescriptor 和 position 不能为 null

        button.setText("改变位置");
        listener = new InfoWindow.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick() {

                            //设置新的坐标
                            LatLng newLatLng = new LatLng(latLng.latitude + 0.005, latLng.longitude + 0.005);
                            marker.setPosition(newLatLng);
                            baiduMap.hideInfoWindow();
                        }
                    };
        infoWindow = new InfoWindow(BitmapDescriptorFactory.fromView(button), latLng, -47,listener);
        baiduMap.showInfoWindow(infoWindow);
 
 

2.1.2 传入View

public InfoWindow(View view, LatLng position, int yOffset)

通过传入的 view 构造一个 InfoWindow, 此时只是利用该view生成一个Bitmap绘制在地图中,监听事件由开发者实现。

参数:

view - InfoWindow 展示的 view

position - InfoWindow 显示的地理位置

yOffset - InfoWindow Y 轴偏移量

抛出:

java.lang.IllegalArgumentException - view 和 position 不能为 null

   Button button = new Button(getApplicationContext());
   button.setBackgroundResource(R.drawable.popup);
   button.setText("更改图标");
   button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                marker.setIcon(bitmapDescriptorNo);
                baiduMap.hideInfoWindow();
               }
      });
    infoWindow = new InfoWindow(button, latLng, -47);
    baiduMap.showInfoWindow(infoWindow);

2.2 InfoWindowClickListener

InfoWindow窗口信息只有一个点击事件,如果我们需要处理一些复杂操作,可以自定义View来构造InfoWindow,事件都在View层处理


void onInfoWindowClick()

信息窗口点击事件处理函数

        button.setText("改变位置");
        //定义InfoWindowClickListener
        listener = new InfoWindow.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick() {

                            //设置新的坐标
                            LatLng newLatLng = new LatLng(latLng.latitude + 0.005, latLng.longitude + 0.005);
                            marker.setPosition(newLatLng);
                            baiduMap.hideInfoWindow();
                        }
                    };
        infoWindow = new InfoWindow(BitmapDescriptorFactory.fromView(button), latLng, -47,listener);
        baiduMap.showInfoWindow(infoWindow);

猜你喜欢

转载自blog.csdn.net/niuba123456/article/details/81140002