0

GoogleMap アプリでは、現在マーカーを使用して船の位置をマークしています。Ship 船名、緯度、経度、MMSI コードなどの多くのプロパティを記録するクラスを作成しました。ユーザーが地図上の多くのマーカーのいずれかをクリックすると、クリック可能な情報ウィンドウが開きます。そのユーザーが情報ウィンドウをクリックすると、別のアクティビティが開き、そのマーカーに関する詳細情報が表示されます。

少なくとも最後の文は私が欲しいものです。緯度と経度の位置を抽出できますが、それ以外はあまりできません。問題は、Ship必要なすべての情報を含むクラスがありますが、参照方法でマーカーに接続されておらず、そのようなことを行う方法もわかりません!

私の最善のアイデアは、Shipマーカーを拡張することでしたが、それはfinalEclipse IDEによるクラスであるため、拡張できません。

これは私のShipクラスです:

public class Ship {

    /** Ship has the following properties
     *  */
    private String shipname = "";
    private String MMSI = "XXXX";
    private double[] loc = new double[2];

    public Ship(String _shipname, String _MMSI, double[] _loc) {
        shipname = _shipname;
        MMSI = _MMSI;
        loc[0] = _loc[0]; // Latitude
        loc[1] = _loc[1]; // Longitude

    }
    public String getName() {
        return shipname;
    }
    public String getMMSI() {
        return MMSI;
    }
    public double getLat() {
        return loc[0];
    }
    public double getLongi() {
        return loc[1];
    }
}

一方、GoogleMapマーカーは次の方法で動的に挿入されます。

public void setupRegion(GoogleMap map, ArrayList<Ship> ships) throws IOException {
        for(Ship ship : ships) {
            map.addMarker(new MarkerOptions()
               .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_red))
               .position(new LatLng(ship.getLat(), ship.getLongi()))
               .title(ship.getName())
               .snippet("Simulate"));
        }
}
4

2 に答える 2

1

一般的に使用される解決策はMap<Marker, Ship>、アクティビティにa を保持し、コールバック (またはその他)map.get(marker)内で実行することです。onInfoWindowClick

Marker.setData(Object)また、機能を追加する私のライブラリを試すこともできます。これにより、Marker.getData()マーカーを作成した後に Ship インスタンスをそこに配置し、それらをonInfoWindowClickコールバック内に戻すことができます。

http://code.google.com/p/android-maps-extensions/

于 2013-03-19T07:30:37.000 に答える
1

を入力する代わりに、の一意の識別子を入力してsnippet()、またはまたはまたはまたはまたはインスタンスを保存する場所でを検索できるようにします。"Simulate"ShipShipDockWharfShipyardOnePercenterYachtClubHashMap<String,Ship>Ship

InfoWindowAdapterまた、情報ウィンドウを使用していると仮定して、スニペットを表示しないように情報ウィンドウの内容をカスタマイズできるように、を設定する必要があります。

于 2013-02-07T18:08:01.063 に答える