我正在开发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图标中。
谢谢。
答案 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