1

私は Android Google マップに取り組んでおり、MapApiV2 を使用しています。地図、ユーザーの場所、地図上のマーカーを表示できます。私の問題は、ユーザーがマップ上のマーカーをクリックしたときに InfoWindow を開きたいということです。ウィンドウを開くこともできますが、情報ビデオにさらにデータを表示する必要があるため、.snippet() メソッドで CustomClass オブジェクトを渡そうとしていますが、文字列オブジェクトのみを除きます。したがって、これを実行するだけでクラス オブジェクトを文字列に変換し (uv.tostring)、snippet() メソッドに渡します。反対側では、marker.getSnippt(); を使用してスニペットからデータを取得しようとしています。文字列から自分のデータにアクセスできません。カスタム クラス オブジェクトを snippt に渡して、カスタム クラスの get メソッド、set メソッドにアクセスできるようにする方法を教えてください。

以下は私のコードです私のカスタムクラスは次のとおりです。

public class UserVerifyer implements UserVerfierInterface{
    // <userPojo>
    // <frequency>0.0</frequency>
    // <message/>
    // <status>NOTOK</status>
    // <token>ey0dok0vozrhwhe98rt6ydbs</token>
    // <url/>
    // </userPojo>
    private String frequency = "", message = "", status = "", token = "",
            url = "";
    public static String statusOk = "OK";

    public void setFrequency(String freq) {
        this.frequency = freq;
    }

    public String getFrequency() {
        return frequency.trim();

    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message.trim();

    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status.trim();

    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getToken() {
        return token.trim();

    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUrl() {
        return url.trim();

    }
}

MyCustomInfo ウィンドウ クラスは次のとおりです。

public class CustomMarkers は InfoWindowAdapter を実装します {

// private Context context;
// private String text;
// private Integer image;
private final View mWindow;
private final View mContents;

public CustomMarkers(Activity activity) {
    // this.context = ctx;
    // this.text = text;
    // this.image = image;
    LayoutInflater inflater = (LayoutInflater) activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    mWindow = inflater.inflate(R.layout.balloon, null);
    mContents = inflater.inflate(R.layout.balloon, null);

}

@Override
public View getInfoContents(Marker marker) {
    // TODO Auto-generated method stub
    render(marker, mWindow);
    return mWindow;
}

@Override
public View getInfoWindow(Marker marker) {
    // TODO Auto-generated method stub
    render(marker, mContents);
    return mContents;
}

private void render(Marker marker, View view) {
    String title = marker.getTitle();
    TextView titleUi = ((TextView) view.findViewById(R.id.txtTitle));

    if (title != null) {
        titleUi.setText(title);
    } else {
        titleUi.setText("");
    }

    String snippet = marker.getSnippet();
    UserVerifyer uv = UserVerifyer.class.cast(snippet);
    System.out.println("Sttaus in Marker= "+uv.getStatus());
    // uv.getStatus();
    TextView snippetUi = ((TextView) view.findViewById(R.id.txtPlace));
    if (snippet != null) {
        snippetUi.setText(snippet);
    } else {
        snippetUi.setText("");
    }
}

}

そして、次のようにマーカーにデータを追加しています:

CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(new LatLng(getMyLocation().getLatitude(),
                        getMyLocation().getLongitude())).zoom(17).bearing(90)
                .tilt(30).build();
        mMap.animateCamera(CameraUpdateFactory
                .newCameraPosition(cameraPosition));
        UserVerifyer uv = new UserVerifyer();

        mMap.addMarker(new MarkerOptions()
                .position(
                        new LatLng(getMyLocation().getLatitude(),
                                getMyLocation().getLongitude()))
                .title("Me")
                .snippet(uv.toString())
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.user_loc)));
        mMap.setInfoWindowAdapter(new CustomMarkers(RecomendationScreen.this));

どうすればこれができるか教えてください。

ありがとう。

4

2 に答える 2

1

MehulJoisar の使用の提案はMap<Marker, YourModel>、Android API v2 の制限を回避する通常の方法ですが、別の方法もあります。

タスクにはAndroid Maps Extensionsを使用できます。クラスに追加setDataしてgetData機能するMarkerため、コードは次のようになります。

    UserVerifyer uv = new UserVerifyer();

    Marker marker = mMap.addMarker(new MarkerOptions()
            .position(
                    new LatLng(getMyLocation().getLatitude(),
                            getMyLocation().getLongitude()))
            .title("Me")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.user_loc)));
    marker.setData(uv);

後でGoogleMapコールバックで:

//String snippet = marker.getSnippet();
UserVerifyer uv = (UserVerifyer) marker.getData();
System.out.println("Sttaus in Marker= "+uv.getStatus());
于 2013-05-15T21:47:43.750 に答える