gpt4 book ai didi

android - 无法设置 Google map 的自定义信息窗口

转载 作者:行者123 更新时间:2023-11-30 00:47:05 30 4
gpt4 key购买 nike

我正在尝试使用此 tutorial 设置自定义信息窗口 .

这是我的代码:

public class MyActivity extends AppCompatActivity implements OnMapReadyCallback, ClickListenerChatFirebase, GoogleMap.InfoWindowAdapter {

public void showMap() {
venueMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(venueLat), Double.parseDouble(venueLng))).title(venue.trim()));
venueMarker.showInfoWindow();
getInfoWindow(venueMarker);
}

public AcceptedRequest(LayoutInflater inflater){
this.inflater = inflater;
}

@Override
public View getInfoWindow(Marker marker) {

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

TextView title = (TextView) v.findViewById(R.id.venue_txt);
title.setText(marker.getTitle());

return v;
}

@Override
public View getInfoContents(Marker arg0) {
// TODO Auto-generated method stub
return null;
}

}

}

这是venue_infowindow_background.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/venue_txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="venue"
android:textSize="14sp"
android:textStyle="bold"
android:textColor="@android:color/white"/>

</LinearLayout>

问题是没有发生任何变化,信息窗口显示默认的文本颜色和背景颜色。

请帮助解决这个问题。

最佳答案

您不能直接调用 getInfoWindow() 方法覆盖。

您需要将 Google map 的 InfoWindowAdapter 设置为您的 Activity,该 Activity 实现了 GoogleMap.InfoWindowAdapter 接口(interface)。

public void showMap() {
venueMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(venueLat), Double.parseDouble(venueLng))).title(venue.trim()));
venueMarker.showInfoWindow();

//This won't work:
//getInfoWindow(venueMarker);

//Do this instead:
mMap.setInfoWindowAdapter(this);
}

为了对该标记使用不同的布局,您可以为所有其他标记扩展不同的自定义布局:

@Override
public View getInfoWindow(Marker marker) {
View v = null;
if (marker.equals(venueMarker)) {
v = inflater.inflate(R.layout.venue_infowindow_background, null);
} else {
v = inflater.inflate(R.layout.some_other_layout, null);
}

TextView title = (TextView) v.findViewById(R.id.venue_txt);
title.setText(marker.getTitle());

return v;
}

为了将“对话泡泡”与默认标记一起使用,而不是与一个自定义标记一起使用,您可以将 getInfoWindow() 与自定义标记一起使用,并使用 getInfoContents() 用于默认标记。 (更多信息 here)。这样的事情可能会奏效。:

@Override
public View getInfoWindow(Marker marker) {
if (!marker.equals(venueMarker)) {
return null;
}
View v = inflater.inflate(R.layout.venue_infowindow_background, null);
TextView title = (TextView) v.findViewById(R.id.venue_txt);
title.setText(marker.getTitle());

return v;
}

@Override
public View getInfoContents(Marker arg0) {
if (marker.equals(venueMarker)) {
return null;
}
View v = inflater.inflate(R.layout.some_other_layout, null);
TextView title = (TextView) v.findViewById(R.id.venue_txt);
title.setText(marker.getTitle());

return v;
}

关于android - 无法设置 Google map 的自定义信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41621392/

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