最近在学习百度地图,发现百度地图更新后,好多东西都改变了,ItemizedOverlay<OverlayItem>这个类更是找不到了。于是自己查了下最新的文档,发现弹窗效果百度提供InfoWindow来实现。
InfoWindow(v, LatLng, listener); 需要我们提供一个View,一个点击的LatLng,和一个Listener。
代码如下:
mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// TODO Auto-generated method stub
View view = LayoutInflater.from(getApplicationContext())
.inflate(R.layout.myview, null);
final LatLng ll = marker.getPosition();
Point p = mBaiduMap.getProjection().toScreenLocation(ll);
p.y -= 47;
LatLng llInfo = mBaiduMap.getProjection().fromScreenLocation(p);
mInfoWindow = new InfoWindow(view, llInfo, null);
MapStatusUpdate m = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.setMapStatus(m);
mBaiduMap.showInfoWindow(mInfoWindow);
return true;
}
});
以上是点击Marker的监听,现在需要弹出一个View。弹出窗口实现了,如何关闭窗口呢?
mBaiduMap.setOnMapStatusChangeListener(new OnMapStatusChangeListener() {
@Override
public void onMapStatusChangeStart(MapStatus arg0) {
// TODO Auto-generated method stub
mBaiduMap.hideInfoWindow();
}
@Override
public void onMapStatusChangeFinish(MapStatus arg0) {
// TODO Auto-generated method stub
}
@Override
public void onMapStatusChange(MapStatus arg0) {
// TODO Auto-generated method stub
}
});
作为初学者,目前就只能想到这些方法去实现弹窗效果,希望各位大大给予改进,指导!