Java/Android:将字符串转换为字节[],然后再转换为浮点数并返回

Java/Android:将字符串转换为字节[],然后再转换为浮点数并返回,java,android,google-maps,polygon,Java,Android,Google Maps,Polygon,我需要在地图上存储我正在绘制的多边形的名称。我所有的polygone都有一个名字,但谷歌地图API不允许你在polygone上放置自己的id(请有人解释一下为什么?!这没有任何意义!!)因此,通过id识别polygone的唯一方法是在其z索引中保留一种id。z索引是一个浮点数,我的id是字符串。因此,我试图将字符串转换为bytes[],然后转换为float,并在需要识别多个字节时对其进行解码。以下是我如何做到这一点的: private float convertStringToFloat(Zo

我需要在地图上存储我正在绘制的多边形的名称。我所有的polygone都有一个名字,但谷歌地图API不允许你在polygone上放置自己的id(请有人解释一下为什么?!这没有任何意义!!)因此,通过id识别polygone的唯一方法是在其z索引中保留一种id。z索引是一个浮点数,我的id是字符串。因此,我试图将字符串转换为bytes[],然后转换为float,并在需要识别多个字节时对其进行解码。以下是我如何做到这一点的:

 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);
    }
不幸的是,它不起作用,我不确定为什么,当我打印输出字符串时,我得到一个如下结果:

[����������������, ����������������]
再一次,我只是不明白为什么没有办法识别多克隆人是API,如果谷歌的任何人读到这篇文章,我们会在什么世界中绘制多克隆人却无法识别他们

更新

以下是我的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;
    }
}
公共类分区数据{
私人车床;
私人车床;
私人车床P3;
私人车床P4;
私有字符串名称;
公共区域数据(JSONObject区域){
患者=新ArrayList();
试一试{
this.name=zone.getString(“name”);
this.P1=新板条(zone.getDouble(“P1Lat”),zone.getDouble(“P1Lon”);
this.P2=新板条(zone.getDouble(“P2Lat”),zone.getDouble(“P2Lon”);
this.P3=新板条(zone.getDouble(“P3Lat”)、zone.getDouble(“P3Lon”);
this.P4=new LatLng(zone.getDouble(“P4Lat”)、zone.getDouble(“P4Lon”);
}捕获(JSONException e){
e、 printStackTrace();
}
}
公共LatLng getP1(){
返回P1;
}
公共无效设置p1(LatLng p1){
P1=P1;
}
公共LatLng getP2(){
返回P2;
}
公共无效设置p2(LatLng p2){
P2=P2;
}
公共LatLng getP3(){
返回P3;
}
公共无效设置p3(LatLng p3){
P3=P3;
}
公共LatLng getP4(){
返回P4;
}
公共无效设置p4(LatLng p4){
P4=P4;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}

使用和hashmap存储分区数据id和多段线id之间的关联:

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

Polyline polyline = map.addPolyline(...);
myIds.put(polyline.getId(),zone.getName();
HashMap myIds=newhashmap();
Polyline Polyline=map.addPolyline(…);
myid.put(polyline.getId(),zone.getName();
和颜色:

Polyline line=map.addPolyline(新的Polyline选项() .添加(新板条(51.5,-0.1),新板条(40.7,-74.0)) .宽度(5)
.color(color.RED));

首先,您似乎试图将一个
浮点
视为具有64位信息。接下来,您将调用
f.byteValue()
并试图将其视为包含64位信息。从根本上说,我非常怀疑这种方法是否有效。我认为谷歌的任何人都不会读到这篇文章。^这是怎么回事?ZoneData是一个包含大量其他值的对象,当我尝试exte时,我用ZoneData中的代码更新了我的问题nd从多段线我得到这个错误:无法从final'com.google.android.gms.maps.model.Polyline'继承是的,使用多段线的问题是我不能用颜色填充它们,我真的需要这样做。但是好的答案谢谢!我不能得到颜色的要点…顺便说一句,我也用颜色更新了答案。这增加了color到直线,而不是填充“多边形”或多段线的内部,这是我需要的。