在标记infowindow中插入地图标记图标

时间:2017-11-10 06:36:39

标签: android google-maps

我正在开发Android应用。 我需要将地图标记图标传递给它的信息窗口。

这是方法addMarker:

  private void addMarker(LatLng latlng, final String title, final String nombre_apellidos, final String datosreporte,final  String tiporeporte) {
        markerOptions.position(latlng);
        markerOptions.title(title);
        markerOptions.snippet(nombre_apellidos+": "+datosreporte);
        if (tiporeporte.equals("1")){
            markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.tipo_1));
        }
        else{
            markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_actihome));
        }


        mGoogleMap.addMarker(markerOptions).showInfoWindow();

        mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
                Toast.makeText(getContext(), marker.getTitle(), Toast.LENGTH_SHORT).show();
            }
        });
    }

这就是我创建infowindow的方式:

 public View getInfoWindow(Marker arg0) {
                return null;
            }

            // Defines the contents of the InfoWindow
            @Override
            public View getInfoContents(Marker arg0) {
                View v = null;
                try {

                    // Getting view from the layout file info_window_layout
                    v = getLayoutInflater().inflate(R.layout.custominfowindow, null);

                    // Getting reference to the TextView to set latitude
                    TextView addressTxt = (TextView) v.findViewById(R.id.addressTxt);
                    TextView nameTxt = (TextView) v.findViewById(R.id.nameTxt);
                    ImageView icono = (ImageView) v.findViewById(R.id.iconoimagen);
                    addressTxt.setText(arg0.getTitle());
                    nameTxt.setText(arg0.getSnippet());



                } catch (Exception ev) {
                    System.out.print(ev.getMessage());
                }

                return v;
            }

我需要将标记图标放在ImageView图标中。

谢谢。

2 个答案:

答案 0 :(得分:1)

更新您的Google Maps Android API v2版本9.4.0

Content-disposition: attachment

而不是这个

com.google.android.gms:play-services:9.4.0

尝试此操作它将返回一个标记对象,然后您可以使用自定义值mGoogleMap.addMarker(markerOptions).showInfoWindow();

setTag()

//从标记

获取值
Marker marker=mGoogleMap.addmarker(new MarkerOptions(LatLang));
// Set your object value as tag
marker.setTag(yourValue)

有关详情,请参阅此link

答案 1 :(得分:1)

传递给自定义InfoWindowAdapter方法的唯一对象是Marker。

您可以通过在Marker对象上设置标记,将活动信息传递到自定义InfoWindowAdapter。您可以通过调用传递对象的setTag方法将标记对象添加到Marker。并从InfoWindowAdapter中的标记获取对象并使用值。

您可以创建数据传输对象,该对象包含您要在地图上的信息窗口中显示的所有元素。

public class InfoWindowData {
    private String image;
    private String hotel;

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getHotel() {
        return hotel;
    }

    public void setHotel(String hotel) {
        this.hotel = hotel;
    }
}

在您的活动中

InfoWindowData data = new InfoWindowData();
data.setImage("blah");
data.setHotel("blah blah");

marker.setTag(data);

在自定义信息窗口类

@Override
    public View getInfoContents(Marker marker) {

        InfoWindowData data = (InfoWindowData) marker.getTag();
    ....

完整示例http://www.zoftino.com/google-maps-android-custom-info-window-example