GoogleMap アプリでは、現在マーカーを使用して船の位置をマークしています。Ship
船名、緯度、経度、MMSI コードなどの多くのプロパティを記録するクラスを作成しました。ユーザーが地図上の多くのマーカーのいずれかをクリックすると、クリック可能な情報ウィンドウが開きます。そのユーザーが情報ウィンドウをクリックすると、別のアクティビティが開き、そのマーカーに関する詳細情報が表示されます。
少なくとも最後の文は私が欲しいものです。緯度と経度の位置を抽出できますが、それ以外はあまりできません。問題は、Ship
必要なすべての情報を含むクラスがありますが、参照方法でマーカーに接続されておらず、そのようなことを行う方法もわかりません!
私の最善のアイデアは、Ship
マーカーを拡張することでしたが、それはfinal
Eclipse 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"));
}
}