图片按钮无法在Google地图v2中的InfoWindowAdapter中使用

时间:2013-12-06 11:37:20

标签: android android-mapview imagebutton android-maps-v2

我想在我的标记信息中添加一些图像按钮。 虽然按钮已添加到视图中,但我不会点击它们。 当我尝试点击它时,点击整个视图。 我的代码如下。

MainActivity.java

private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final RelativeLayout base;
    base = (RelativeLayout) findViewById(R.id.base);
    googleMap = ((MapFragment) getFragmentManager().findFragmentById(
            R.id.map)).getMap();
    try {           
        initilizeMap();   // Loading map
    } catch (Exception e) {
        Log.d("asdfadfadf", "asdfasdf");
    }       
    googleMap.setMyLocationEnabled(true);
    //googleMap.clear();
    IconGenerator i = new IconGenerator(getBaseContext());
    i.setStyle(IconGenerator.STYLE_BLUE);
    Bitmap tt = i.makeIcon("asdf");
    LatLng myLocation = new LatLng(22.899171, 89.500186);
    Marker myLocMarker = googleMap.addMarker(new MarkerOptions()
    .position(myLocation)
    .icon(BitmapDescriptorFactory.fromBitmap(tt))
    .title("sssss"));
    googleMap.setInfoWindowAdapter(new InfoWindowAdapter() {

        @Override
        public View getInfoWindow(Marker mk) {
            // TODO Auto-generated method stub

            return null;
        }

        @Override
        public View getInfoContents(Marker arg0) {
            // TODO Auto-generated method stub
            ImageButton set,from,favor;
            View view = getLayoutInflater().inflate(R.layout.marker_info,null);
            set = (ImageButton) view.findViewById(R.id.imageButtonDestination);
            from = (ImageButton) view.findViewById(R.id.imageButtonFrom);
            favor = (ImageButton) view.findViewById(R.id.imageButtonFavourite);
            set.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Log.d("sssssssssssssssss", "sssssssssssssssss");
                }
            });
            return view;
        }
    });
}

/**
 * function to load map. If map is not created it will create it for you
 * */
private void initilizeMap() {
    if (googleMap == null) {
        Toast.makeText(getApplicationContext(),
                "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                .show();
    }
    if (googleMap == null) {
        googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.map)).getMap();  // check if map is created successfully or not
    }
}

@Override
protected void onResume() {
    super.onResume();
    initilizeMap();
}

}

不知道该怎么做。 提前谢谢。

3 个答案:

答案 0 :(得分:3)

您无法将标记侦听器添加到标记InfoWindow,因为它不是真实视图。但是一个从你的布局渲染的Bitmap。

来自Google Docshttps://developers.google.com/maps/documentation/android/marker#info_windows

  

注意:绘制的信息窗口不是实时视图。观点是   在它的时候呈现为图像(使用View.draw(Canvas))   回。这意味着对视图的任何后续更改都不会   通过地图上的信息窗口反映出来。更新信息窗口   稍后(例如,在图像加载后),请致电showInfoWindow()。   此外,信息窗口不会考虑任何交互性   典型的普通视图,如触摸或手势事件。不管你   可以在整个信息窗口上收听通用点击事件   在下面的部分中描述。

答案 1 :(得分:2)

将GoogleMap.OnInfoWindowClickListener()设置为地图,实现界面。你把标记传递给你,在那里叫你行动:

googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
    @Override public void onInfoWindowClick(Marker marker) {
        //do your thing here
        }
});

答案 2 :(得分:0)

我不太了解你需要什么,但根据理解是点击要添加到地图的图像(标记)。如果可以的话可以试试这个:

googleMap.setOnMarkerClickListener(new OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker arg0) {
            //Your code when you do click

            return false;
        }
    });

我希望能帮到你,对不起我的英语:(