Android 如何在一张地图中仅显示一个气球?
我有一个地图视图,其中包含了大量的位置大头针,每个大头针可以显示气球在它的上方。但当我按下另一个针脚时,旧的那个气球不是自动关闭的,所以每次我都想在其他气球显示之前清除气球 (I)项目化覆盖) 请帮忙,谢谢。来自Android 如何在一张地图中仅显示一个气球?,android,android-mapview,itemizedoverlay,Android,Android Mapview,Itemizedoverlay,我有一个地图视图,其中包含了大量的位置大头针,每个大头针可以显示气球在它的上方。但当我按下另一个针脚时,旧的那个气球不是自动关闭的,所以每次我都想在其他气球显示之前清除气球 (I)项目化覆盖) 请帮忙,谢谢。来自 /** *将此覆盖的引出序号视图的可见性设置为“消失”。 */ 私有void隐藏分配(){ 如果(BallooView!=null){ BallooView.setVisibility(View.GONE); } } /** *隐藏任何其他BalloodItemIzedOverlay实
/**
*将此覆盖的引出序号视图的可见性设置为“消失”。
*/
私有void隐藏分配(){
如果(BallooView!=null){
BallooView.setVisibility(View.GONE);
}
}
/**
*隐藏任何其他BalloodItemIzedOverlay实例的引出序号视图
*这可能会出现在地图视图上。
*
*@param overlays-地图视图上的覆盖列表(包括此)。
*/
专用空心隐藏其他引出序号(列表覆盖){
用于(覆盖:覆盖){
if(覆盖BalloodItemIzedOverlay和覆盖的覆盖实例!=此){
((BallodeItemizeOverlay)覆盖);
}
}
}
来自
/**
*将此覆盖的引出序号视图的可见性设置为“消失”。
*/
私有void隐藏分配(){
如果(BallooView!=null){
BallooView.setVisibility(View.GONE);
}
}
/**
*隐藏任何其他BalloodItemIzedOverlay实例的引出序号视图
*这可能会出现在地图视图上。
*
*@param overlays-地图视图上的覆盖列表(包括此)。
*/
专用空心隐藏其他引出序号(列表覆盖){
用于(覆盖:覆盖){
if(覆盖BalloodItemIzedOverlay和覆盖的覆盖实例!=此){
((BallodeItemizeOverlay)覆盖);
}
}
}
也许太晚了,但我想我今天也面临着同样的问题
使用mapView.getOverlays().clear()
删除项目时,将删除所有项目。
但是,如果您查看BalloodItemIzedOverlay.java
中的方法“CreateandDisplayBalloodOverlay”,您将看到行mapView.addView(BalloodView,params)
,因此mapView
将气球的引用保留为子对象。这就是为什么你的别针不见了,但气球还在
快速修复方法是在删除项目后,使用方法e
mapView.removeViewAt()
删除所有BallooOverlayView
的实例。也取决于您的实现,您可能需要保留当前显示的气球。可能太晚了,但我想我今天也面临同样的问题
使用mapView.getOverlays().clear()
删除项目时,将删除所有项目。
但是,如果您查看BalloodItemIzedOverlay.java
中的方法“CreateandDisplayBalloodOverlay”,您将看到行mapView.addView(BalloodView,params)
,因此mapView
将气球的引用保留为子对象。这就是为什么你的别针不见了,但气球还在
快速修复方法是在删除项目后,使用方法e
mapView.removeViewAt()
删除所有BallooOverlayView
的实例。根据您的实现,您可能需要保留当前显示的气球。以下代码将从地图中删除所有气球覆盖项:
MapView.removeViews(0, MapView.getChildCount());
它相当于MapView.getOverlays().clear()(用于常规覆盖),上面的代码适用于包含气球覆盖的地图。以下代码将从地图中删除所有气球覆盖项:
MapView.removeViews(0, MapView.getChildCount());
它相当于MapView.getOverlays().clear()(用于常规覆盖),上面的代码适用于包含气球覆盖的地图。是的,我有此分区代码,它也可以工作,但当我按pin1(show Ballod1)然后转到其他活动,然后返回地图页面时,它出现了一些问题,Balloo1仍然显示,尽管我按了pin2键(它将显示Balloo1和Balloo2),因此我想在转到其他活动时关闭Balloo1,请提供帮助。如果要删除其他引出序号,请调用
mapOverlays.clear();mapView.invalidate()代码>。我必须查看您的代码,特别是onResume()中的操作。您必须在那里隐藏/删除Balloo1覆盖项。我尝试mMapView.getOverlays().clear();mMapView.invalidate();在onResume中,结果是pin消失了,但balloon仍然显示我应该做什么?同样,我不能不看代码就说。您可能必须mapView.getOverlays().remove(i)
,然后调用invalidate.yes我也有此分区代码,它可以工作,但当我按pin1(显示Ballod1)然后转到其他活动,然后返回地图页时,Ballod1出现了一些问题,尽管我按了pin2(它将显示Ballod1和Ballod2),Ballod1仍然显示因此,当我转到其他活动时,我想关闭Ballod1,请提供帮助。如果要删除其他引出序号,请调用mapOverlays.clear();mapView.invalidate()代码>。我必须查看您的代码,特别是onResume()中的操作。您必须在那里隐藏/删除Balloo1覆盖项。我尝试mMapView.getOverlays().clear();mMapView.invalidate();在onResume中,结果是pin消失了,但balloon仍然显示我应该做什么?同样,我不能不看代码就说。您可能必须mapView.getOverlays().remove(i)
,然后调用invalidate。