gpt4 book ai didi

Java/Android : convert String to bytes[] then to float and back

转载 作者:行者123 更新时间:2023-12-02 13:37:34 25 4
gpt4 key购买 nike

我需要存储我在 map 上绘制的多边形的名称。我所有的多边形都有一个名称,但 GoogleMap API 不允许您在多边形上放置自己的 id(请有人解释为什么?!这没有任何意义!!)通过 id 识别多边形的唯一方法是因此要在其 z 索引中保留某种 ID。 z-index 是一个 float ,我的 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 没有办法识别多边形,如果 Google 的任何人读到这篇文章,我们会在哪个世界中想要绘制多边形但无法识别它们?!

更新

以下是我的 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;
}
}

最佳答案

使用 hashmap 来存储 ZoneData id 和折线 id 之间的关联:

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

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

并带有颜色:

Polyline line = map.addPolyline(new PolylineOptions() .add(新的 LatLng(51.5, -0.1), 新的 LatLng(40.7, -74.0)) .宽度(5) .color(Color.RED));

关于Java/Android : convert String to bytes[] then to float and back,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42906808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com