2017-03-20 11 views
0

マップ上に描いているポリゴンの名前を格納する必要があります。私のすべてのポリゴンには名前がありますが、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; 
    } 
} 
+1

まず、フロートに64ビットの情報があるかのように扱うようです。次に、 'f.byteValue()'を呼び出して、* 64ビットの情報を持つかのように扱います。基本的に、私はこのアプローチがうまくいくとは大いに疑う。 –

+1

私はGoogleの誰もこれを読むつもりはないと思う^^ –

答えて

1

ZoneData IDとポリラインIDとストア協会に使用し、ハッシュマップ:

HashMap<String,String> myIds = new HashMap<>(); 

Polyline polyline = map.addPolyline(...); 
myIds.put(polyline.getId(),zone.getName(); 

と色で:

ポリラインライン= map.addPolyline(新しいPolylineOptions()) .add(新しいLatLng(51.5、-0.1)、新しいLatLng(40.7、-74.0)) .width(5) .color(Color.RED));

+0

どうしたらうまくいくのですか? ZoneDataはその中に他の値が入っているオブジェクトです。私はzoneDataのコードで質問を更新しました –

+0

Polylineから拡張しようとすると、 –

+0

の例が更新されました。このエラーが発生します:最終的に 'com.google.android .gms.maps.model.Polyline ' –

関連する問題