web-dev-qa-db-ja.com

.snippetの複数行または改行(google maps apiv2)

私はグーグルマップAPIv2で開発しています。私が今直面している問題は、情報ウィンドウ/スニペットに1行のWordしか追加できないことです。しかし、私が望む出力は、以下に示す例のようにブレークライン形式で表示できます。それで、それを解決するための可能な方法はありますか?

例:

座標:03.05085、101.70506

制限速度:80 km/h

public class MainActivity extends FragmentActivity {
  static final LatLng SgBesi = new LatLng(03.05085, 101.76022);
  static final LatLng JB = new LatLng(1.48322, 103.69065);
  private GoogleMap map;


  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
            .getMap();

    map.addMarker(new MarkerOptions().position(SgBesi)
        .title("KM D7.7 Sungai Besi")               //name
        .snippet("Coordinate: 03.05085, 101.70506"));   //description

    map.addMarker(new MarkerOptions().position(JB)
        .title("test") 
        .snippet("Hey, how are you?")); 

       // .icon(BitmapDescriptorFactory  //set icon
       //     .fromResource(R.drawable.ic_launcher)));

    // move the camera instantly with a zoom of 15.
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(SgBesi, 15));

    // zoom in, animating the camera.       
    map.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
   }
}
10
KS Tan

custom InfoWindowAdapter を使用して、InfoWindowのレイアウトをレイアウトファイルを使用して定義されたカスタムデザインに変更する必要があります。基本的にあなたはする必要があります:

  1. GoogleMap.setInfoWindowAdapter(Yourcustominfowindowadpater)を使用して関数を宣言します
  2. 以下のようなクラスがあります。

.。

class Yourcustominfowindowadpater implements InfoWindowAdapter {
    private final View mymarkerview;

    Yourcustominfowindowadpater() {
        mymarkerview = getLayoutInflater()
            .inflate(R.layout.custominfowindow, null); 
    }

    public View getInfoWindow(Marker marker) {      
        render(marker, mymarkerview);
        return mymarkerview;
    }

    public View getInfoContents(Marker marker) {
       return null;
    }

    private void render(Marker marker, View view) {
       // Add the code to set the required values 
       // for each element in your custominfowindow layout file
    }
}
21
tony m

カスタム情報ウィンドウを作成するには、InfoWindowAdapterを使用する必要があります。デフォルトの実装では、スニペットから改行が削除されますが、これはマイナーなバグと見なされる可能性があります。

0
MaciejGórski

@tonyに何かを追加したいのですが、 documentation によると、実行時に画像として描画されるため、カスタムビューにアクションを追加することはできません。

注:描画される情報ウィンドウはライブビューではありません。ビューは、返されるときに画像としてレンダリングされます(View.draw(Canvas)を使用)。これは、ビューに対するその後の変更がマップの情報ウィンドウに反映されないことを意味します。後で(たとえば、画像がロードされた後に)情報ウィンドウを更新するには、showInfoWindow()を呼び出します。さらに、情報ウィンドウは、タッチイベントやジェスチャイベントなどの通常のビューに典型的な対話性を尊重しません。ただし、以下のセクションで説明するように、情報ウィンドウ全体で一般的なクリックイベントを聞くことができます。

0
Mina Fawzy