AndroidでGoogle Maps Android API v2を使用して、現在の位置を近くのマーカーで表示します。近くの場所の場所とタイトルは、Google Places API を使用して受信されます。
問題は、タイトル/スニペットの英語以外の名前が正しく表示されないことです。たとえば、ヘブライ語の名前。
スクリーンショットを添付します。
)
AndroidでGoogle Maps Android API v2を使用して、現在の位置を近くのマーカーで表示します。近くの場所の場所とタイトルは、Google Places API を使用して受信されます。
問題は、タイトル/スニペットの英語以外の名前が正しく表示されないことです。たとえば、ヘブライ語の名前。
スクリーンショットを添付します。
)
アラビア語とヘブライ語が問題を引き起こし、英語とロシア語は問題を引き起こしていないため、右から左 (RTL) 言語に関して、デフォルトの情報ウィンドウの実装で何かが壊れていると推測します。特に Android 4.2 でテストを実行している場合、Maps V2 のデフォルトの情報ウィンドウのコンテンツがさまざまな RTL 関連の属性を誤って適用している可能性があります。
幸いなことに、情報ウィンドウで使用したい を実装InfoWindowAdapter
してgetInfoContents()
返すことにより、独自の情報ウィンドウの内容を提供できます。View
たとえば、このサンプル プロジェクト(私の本への明日の更新から) は、これを使用して情報ウィンドウをカスタマイズする方法を示していますInfoWindowAdapter
。
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);
}
}
ウィンドウ全体を置き換えたい場合はgetInfoWindow()
、View
. getInfoWindow()
を返す場合null
、getInfoContents()
ウィンドウのコンテンツに使用されます。InfoWindowAdapter
次に、 viaのインスタンスを にアタッチsetInfoWindowAdapter()
しますGoogleMap
。
あなたの場合、独自のレイアウトを使用して、RTL を正しく実装していることを確認できます。原則として、これでこの問題は解決するはずです。Maps V2 が、正常に動作するはずの RTL コードを壊してしまうような奇妙な動作をすることが考えられます。その場合は、問題を報告する必要があります。