java – 设置标注图像mapbox android

在iOS中,您可以通过调用以下内容轻松设置标记的标注:

[marker setCanShowCallout:YES];
[marker setRightCalloutAccessoryView:YOUR_BUTTON];

但是我找不到Mapbox Android SDK的这个功能.我现在有一个侦听器,它可以检测到calloutview上的触摸但是如何设置一个标注图像/按钮?

Marker marker = new Marker(p.getTitle(), p.getCatagoryName(), new LatLng(p.getLatitude(), p.getLongitude()));
                        marker.setMarker(getResources().getDrawable(getResources().getIdentifier(string, "drawable", getActivity().getPackageName())));
                                mMapView.addMarker(marker);

                        InfoWindow toolTip = marker.getToolTip(mMapView);
                        View view = toolTip.getView();
                        // view.setBackgroundResource(R.drawable.callout_button); THIS DOES NOT WORK
                        view.setOnTouchListener(new View.OnTouchListener() {
                            @Override
                            public boolean onTouch(View view, MotionEvent motionEvent) {
                                Log.e(TAG, "onTouch");

                                return true;
                            }
                        });

解决方法:

ryansh的出色响应要求我在自定义布局中包含带有ids tooltip_title和tooltip_description的TextViews.我还必须添加第三个tooltip_subdescription TextView.默认的InfoWindow代码假定存在这些视图,如果不存在则会崩溃.为了更好的控制,我扩展了InfoWindow,覆盖了onOpen,并且能够使用我想要的工具提示的任何布局.对于扩展的Marker类中重写的createTooltip,我自然地实例化并返回我的扩展InfoWindow对象.

更新.这是一个扩展标记和放大器的例子. InfoWindow支持自定义工具提示:

public class MapboxMarker extends Marker {
    private MyInfoWindow mInfoWindow;

    public class MyInfoWindow extends InfoWindow {

        public MyInfoWindow(int layoutResId, MapView mapView) {
            super(layoutResId, mapView);
        }

        public void onOpen(Marker overlayItem) {
            //
            //  Set data on mInfoWindow.getView()
            //
        }

    }

    public MapboxMarker(MapView mv, LatLng aLatLng, MapController mapController){
        super(mv, "Title", "Description", aLatLng);
    }

    @Override
    protected InfoWindow createTooltip(MapView mv) {
        mInfoWindow = new MyInfoWindow(R.layout.custom_tooltip_layout, mv);
        return mInfoWindow;
    }
}
上一篇:javascript – Mapbox GL JS vs. Mapbox.js


下一篇:java – 从一组Geopoints Mapbox中找到边界框