マップ上に描いているポリゴンの名前を格納する必要があります。私のすべてのポリゴンには名前がありますが、GoogleMap APIではポリゴンに自分のIDを置くことはできません(なぜ誰かが説明してください!これは意味をなさない!)IDによるポリゴンを特定する唯一の方法はそれゆえ、z-indexにある種類のIDを保持することです。 z-indexは浮動小数点数で、私のIDは文字列です。したがって私は文字列をバイト[]に変換してから浮動小数点に変換しようとしています。そして、ポリゴンを識別する必要があるときにそれをデコードします。ここで私はそれをやろうとしています方法です:Java/Android:文字列をバイト[]に変換して浮動して戻す
private float convertStringToFloat(ZoneData zone) {
byte[] stringinBytes = zone.getName().getBytes();
return ByteBuffer.wrap(stringinBytes).getFloat();
}
private String convertFloatToString(float nameFloat) {
Float f = new Float(nameFloat);
byte[] nameBytesArray = new byte [] { (byte) (f.byteValue() >>> 56),
(byte) (f.byteValue() >>> 48),
(byte) (f.byteValue() >>> 40),
(byte) (f.byteValue() >>> 32),
(byte) (f.byteValue() >>> 24),
(byte) (f.byteValue() >>> 16),
(byte) (f.byteValue() >>> 8),
(byte) f.byteValue() };
return new String(nameBytesArray);
}
残念ながら、それだけでは動作しませんし、私は、出力文字列を印刷するとき、私はこれを取得、なぜ、私はわからない午前:私はもう一度
[����������������, ����������������]
をちょうど理解していないなぜ誰もがGoogleをどのような世界で我々はポリゴンを描くが、それらを識別することができないようにこれを読んでフォームを作成する場合は、ポリゴンを識別する方法はないAPIです!ここで
UPDATE
は私ZoneDataコードがどのように動作するかです:
public class ZoneData {
private LatLng P1;
private LatLng P2;
private LatLng P3;
private LatLng P4;
private String name;
public ZoneData(JSONObject zone){
patients = new ArrayList<PatientData>();
try {
this.name = zone.getString("name");
this.P1 = new LatLng(zone.getDouble("P1Lat"), zone.getDouble("P1Lon"));
this.P2 = new LatLng(zone.getDouble("P2Lat"), zone.getDouble("P2Lon"));
this.P3 = new LatLng(zone.getDouble("P3Lat"), zone.getDouble("P3Lon"));
this.P4 = new LatLng(zone.getDouble("P4Lat"), zone.getDouble("P4Lon"));
} catch (JSONException e) {
e.printStackTrace();
}
}
public LatLng getP1() {
return P1;
}
public void setP1(LatLng p1) {
P1 = p1;
}
public LatLng getP2() {
return P2;
}
public void setP2(LatLng p2) {
P2 = p2;
}
public LatLng getP3() {
return P3;
}
public void setP3(LatLng p3) {
P3 = p3;
}
public LatLng getP4() {
return P4;
}
public void setP4(LatLng p4) {
P4 = p4;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
まず、フロートに64ビットの情報があるかのように扱うようです。次に、 'f.byteValue()'を呼び出して、* 64ビットの情報を持つかのように扱います。基本的に、私はこのアプローチがうまくいくとは大いに疑う。 –
私はGoogleの誰もこれを読むつもりはないと思う^^ –