0

ユーザーがマップの空白部分をタップすると新しいフラグが表示され、フラグをタップするとダイアログ ボックスが表示されるアプリを作成しようとしています。

最初の onTap メソッドは自分で作成し、2 番目のメソッドは Google マップのチュートリアルからコピーして使い始めました。問題は、最初のものは常に発火し、2 つ目は発火しないことです。最初のメソッドを削除すると、2 番目のメソッドが想定どおりに機能します (フラグをタップすると、対応するダイアログが表示されます)。これらは両方とも ItemizedOverlay クラスのメソッドであり、mContext はコンストラクターによって生成されたコンテキストであり、locations は OverlayItems の ArrayList です。

私の質問は、どうすれば2つを調和させることができるでしょうか?

    public boolean onTap(GeoPoint p, MapView mapView){
        locations.add(new OverlayItem(p, "Point 3", "Point 3"));
        populate();
        return false;
    }

    @Override
    protected boolean onTap(int index) {
      OverlayItem item = locations.get(index);
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
      dialog.setTitle(item.getTitle());
      dialog.setMessage(item.getSnippet());
      dialog.show();
      return true;
    }
4

1 に答える 1

3

問題は、実装/オーバーライドすることによって、そのメソッドの独自の実装が通常は呼び出される実行をonTap(GeoPoint p, MapView mapView)妨げていることです。ItemizedOverlayonTap(int index)

あなたはもっと似たものが欲しい...

public boolean onTap(GeoPoint p, MapView mapView){
    if (super.onTap(p, mapView)) 
        return true; 

    locations.add(new OverlayItem(p, "Point 3", "Point 3"));
    populate();
    return false;
}

@Override
protected boolean onTap(int index) {
  OverlayItem item = locations.get(index);
  AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
  dialog.setTitle(item.getTitle());
  dialog.setMessage(item.getSnippet());
  dialog.show();
  return true;
}

それが役立つことを願っています。

于 2011-12-31T22:20:52.633 に答える