这是我将新标记添加到Google地图的代码:
MarkerOptions m = new MarkerOptions();
m.title(title);
m.snippet(snippet);
m.position(location);
mMap.addMarker(m);
mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Toast.makeText(DemoActivity.this, "WindowClicked: "+ marker.getTitle() + ":" + marker.getSnippet(),
Toast.LENGTH_SHORT).show();
}
});
现在,当title
和snippet
为英语时,此功能正常。 infoWindow
和Toast
按预期工作。
但是,在我的情况下,title
和snippet
是阿拉伯语,Toast
工作正常但 InfoWindow显示空窗口 < /强>
在我看来,这是一个与阿拉伯语有关的错误。有办法解决它吗?
答案 0 :(得分:8)
@jimmithy的回答解决了我的问题。
这只是来自this project的三步实施:
第1步:创建infoWindow的布局。这是popup.xml
代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="2dip"
android:src="@drawable/ic_launcher"
android:contentDescription="@string/icon"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/snippet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"/>
</LinearLayout>
</LinearLayout>
第2步:创建InfoWindowAdapter的实现。这是PopupAdapter
类:
class PopupAdapter implements InfoWindowAdapter {
LayoutInflater inflater=null;
PopupAdapter(LayoutInflater inflater) {
this.inflater=inflater;
}
@Override
public View getInfoWindow(Marker marker) {
return(null);
}
@Override
public View getInfoContents(Marker marker) {
View popup=inflater.inflate(R.layout.popup, null);
TextView tv=(TextView)popup.findViewById(R.id.title);
tv.setText(marker.getTitle());
tv=(TextView)popup.findViewById(R.id.snippet);
tv.setText(marker.getSnippet());
return(popup);
}
}
第3步:在您的“活动”中,将适配器设置为GoogleMap:
mMap.setInfoWindowAdapter(new PopupAdapter(getLayoutInflater()));
你被定了!
答案 1 :(得分:7)
解决这个问题的方法是显示自定义信息窗口。您可以通过创建InfoWindowAdapter并使用GoogleMap.setInfoWindowAdapter()进行设置来完成此操作。
要替换默认信息窗口,请使用自定义渲染覆盖getInfoWindow(Marker),并为getInfoContents(Marker)返回null。要仅替换默认信息窗口框架内的信息窗口内容(标注气泡),请在getInfoWindow(Marker)中返回null并改为覆盖getInfoContents(Marker)。
更多信息:https://developers.google.com/maps/documentation/android/marker#info_windows
答案 2 :(得分:3)
您应该使用此命令.title("\u200e"+"عربی").