gpt4 book ai didi

android - 谷歌地图android的自定义信息窗口

转载 作者:行者123 更新时间:2023-11-29 21:05:48 25 4
gpt4 key购买 nike

我想在标记点击时显示一个自定义信息窗口

我希望它是这样的:

ImageView

TextView

TextView

TextView

Button Button

看到别人发帖问这个,还是一头雾水。

最佳答案

关于ImageView和TextView,试试这个:

设置信息窗口布局:infowindowlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#FFFFFF" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

</LinearLayout>

在您的 MapActivity 中(这是一个标记的示例,但您也可以将其用于其他标记):

public class MapActivity extends Activity  {
private GoogleMap mMap;
private Marker Somewhere;
private int markerclicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
...
...
final LatLng somewhere = new LatLng(..., ...);

Somewhere=mMap.addMarker(new MarkerOptions()
.position(somewhere)
.title("YOUR TITLE")
.snippet("INFO")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));

...
...
...

mMap.setInfoWindowAdapter(new InfoWindowAdapter() {

// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker arg0) {
return null;
}

// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker arg0) {

// Getting view from the layout file infowindowlayout.xml
View v = getLayoutInflater().inflate(R.layout.infowindowlayout, null);

LatLng latLng = arg0.getPosition();

ImageView im = (ImageView) v.findViewById(R.id.imageView1);
TextView tv1 = (TextView) v.findViewById(R.id.textView1);
TextView tv2 = (TextView) v.findViewById(R.id.textView2);
String title=arg0.getTitle();
String informations=arg0.getSnippet();

tv1.setText(title);
tv2.setText(informations);

if(onMarkerClick(arg0)==true && markerclicked==1){
im.setImageResource(R.drawable.yourdrawable);
}


return v;

}
});
}

public boolean onMarkerClick(final Marker marker) {

if (marker.equals(Somewhere))
{
markerclicked=1;
return true;
}
return false;
}

关于Buttons、ImageButtons等没有办法。 documentation说:

As mentioned in the previous section on info windows, an info window is not a live View, rather the view is rendered as an image onto the map. As a result, any listeners you set on the view are disregarded and you cannot distinguish between click events on various parts of the view. You are advised not to place interactive components — such as buttons, checkboxes, or text inputs — within your custom info window.

无论如何,似乎有解决办法,参见this answer here .我不知道它是否适用于我的代码,但它似乎适用于按钮和图像按钮。

关于android - 谷歌地图android的自定义信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24618970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com