2015-10-05 54 views
-1

我期待在Customize BalloonPopup上添加多个onCLickListener来处理不同的行为。在BalloonPopup上添加多个OnClickListener - Nutiteq SDK

https://developer.nutiteq.com/guides/events

public class MyMapEventListener extends MapEventListener { 
    private MapView mapView; 
    private LocalVectorDataSource vectorDataSource; 

    private BalloonPopup oldClickLabel; 

    public MyMapEventListener(MapView mapView, LocalVectorDataSource vectorDataSource) { 
     this.mapView = mapView; 
     this.vectorDataSource = vectorDataSource; 
    } 



    @Override 
    public void onMapClicked(MapClickInfo mapClickInfo) { 
     Log.d(Const.LOG_TAG, "Map click!"); 

     // Remove old click label 
     if (oldClickLabel != null) { 
      vectorDataSource.remove(oldClickLabel); 
      oldClickLabel = null; 
     } 

     BalloonPopupStyleBuilder balloonPopupStyleBuilder = new BalloonPopupStyleBuilder(); 
    balloonPopupStyleBuilder.setCornerRadius(20); 
    balloonPopupStyleBuilder.setLeftMargins(new BalloonPopupMargins(6, 6, 6, 6)); 
    balloonPopupStyleBuilder.setLeftImage(BitmapUtils.createBitmapFromAndroidBitmap(infoImage)); 
    balloonPopupStyleBuilder.setRightImage(BitmapUtils.createBitmapFromAndroidBitmap(arrowImage)); 
    balloonPopupStyleBuilder.setRightMargins(new BalloonPopupMargins(2, 6, 12, 6)); 
    balloonPopupStyleBuilder.setPlacementPriority(1); 
    BalloonPopup popup1 = new BalloonPopup(proj.fromWgs84(new MapPos(24.655662, 59.425521)), 
              balloonPopupStyleBuilder.buildStyle(), 
              "Popup with pos", 
              "Images, round"); 
    popup1.setMetaDataElement("ClickText", "popupcaption nr 1"); 
    vectorDataSource1.add(popup1); 

     // Check the type of the click 
     String clickMsg = null; 
     if (mapClickInfo.getClickType() == ClickType.CLICK_TYPE_SINGLE) { 
      clickMsg = "Single map click!"; 
     } else if (mapClickInfo.getClickType() == ClickType.CLICK_TYPE_LONG) { 
      clickMsg = "Long map click!"; 
     } else if (mapClickInfo.getClickType() == ClickType.CLICK_TYPE_DOUBLE) { 
      clickMsg = "Double map click!"; 
     } else if (mapClickInfo.getClickType() == ClickType.CLICK_TYPE_DUAL) { 
      clickMsg ="Dual map click!"; 
     } 


    } 
} 

有没有办法来实现这一目标?

+0

上述代码有什么问题? – jaibatrik

+0

@jaibatrik我在寻找的是带有2个按钮的自定义balloonpopup,并在点击它们时具有单独的行为? – Fahim

+0

如果BalloonPopup类从'View'扩展,您可以尝试从'View'类重写'onTouch'方法。 – jaibatrik

回答

0

您是否尝试过实施GestureDetector.SimpleOnGestureListener类?

0

恐怕现在的Nutiteq SDK API在一个BalloonPopup上不能有多个侦听器或按钮。解决方法是在地图上使用单独的Android View而不是Popup,例如Google地图应用最新版本可以:他们不会尝试显示复杂的数据,并且按钮完全可以作为地图弹出,但为此可以使用单独的屏幕区域。

相关问题