目录
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);