我正在尝试在自定义信息窗口中显示图像,我有20个自定义信息窗口使用相同的布局但是在运行代码时它们看起来完全相同,因为它们都使用相同的TextView。
map.setInfoWindowAdapter(new InfoWindowAdapter(){
@Override
public View getInfoContents(Marker arg0) {
View v = getLayoutInflater().inflate(R.layout.custommarker, null);
LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
TextView tv = new TextView(this);
tv.setText("Text");
ll.addView(tv);
return v;
}
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
});
我可以在默认信息窗口中显示图像吗?如果不是,我将如何使用此布局获得所有自定义标记,
感谢
答案 0 :(得分:1)
在这里,我看到了一个演示如何实现Custom Info Window
。
首先将Marker
添加到Google Map
,例如:
static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
Marker melbourne = mMap.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
.snippet("Population: 4,137,400"));
现在,当您点击Marker
然后Custom Info Window
触发器时,您将使用getTitle()
和使用getSnippet()
的标记摘要获得特定的标记标题,如:
map.setInfoWindowAdapter(new InfoWindowAdapter(){
@Override
public View getInfoContents(Marker marker) {
View v = getLayoutInflater().inflate(R.layout.custommarker, null);
LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
TextView title = new TextView(this);
title.setText(marker.getTitle());
ll.addView(title);
TextView snipp = new TextView(this);
snipp.setText(marker.getSnippet());
ll.addView(snipp);
return v;
}
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
});
输出:当您点击Marker
然后Custom Info Window
显示如下:
更新:您的应用程序崩溃了,这是
的原因 LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
更改为
LinearLayout ll = (LinearLayout)v.findViewById(R.id.ll);
你的LinearLayout
来自夸大的布局。
答案 1 :(得分:0)
我使用了代码
MarkerOptions MarkerT = new MarkerOptions().snippet("Hello");
MarkerT.title(postc.getAuthor());
MarkerT.position(new LatLng(postc.getLat(), postc.getLong()));
MarkerT.icon(BitmapDescriptorFactory.fromBitmap(bmp));
Marker marker = map.addMarker(MarkerT);
map.setInfoWindowAdapter(new InfoWindowAdapter(){
@Override
public View getInfoContents(Marker marker) {
View v = getLayoutInflater().inflate(R.layout.custommarker, null);
LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
ink(marker.getSnippet(),ll);
return v;
}
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
});
这导致崩溃,我不确定为什么,谢谢你的回复:) ink =创建textView的方法。