【问题标题】:Android-How to convert String value of latLng from Firebase back to latLng?Android-如何将 latLng 的字符串值从 Firebase 转换回 latLng?
【发布时间】:2017-10-11 03:45:00
【问题描述】:

在我的应用中,我试图让人们标记他们的位置,并通过 Firebase 将其带回。

这是我获取 latLng 的代码:

 final LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());

然后我将 latLng 的字符串值发送到另一个活动,以便将其发送到数据库:

            Intent co_intent = new Intent(MapsActivity.this, ServerImage.class);
            co_intent.putExtra("pelatlng",String.valueOf(latLng));
            MapsActivity.this.startActivity(co_intent);

当我这样做时,坐标会像这样保存在数据库中(出于明显原因的假坐标):

Markers:
coordinates: "lat/lng:(35.000000,119.0000000)"

然后我得到了 Databse 值,所以我可以带回坐标:

mDatabaseMarker=FirebaseDatabase.getInstance().getReference().child("Markers");

现在我正在尝试将保存的标记通过 ChildEventListener 像这样:

refDatabase.addChildEventListener(new ChildEventListener() {
 @Override
 public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {

                );
      mMap.addMarker(new MarkerOptions()
          .position(?)

 }

但是,我不知道标记位置应该放什么。 我可以将值作为字符串取回就好了,但是在将标记放在该位置时遇到了麻烦。感谢您的帮助。

【问题讨论】:

  • 我试过了,但是数据库中的坐标值是空白的

标签: android google-maps firebase firebase-realtime-database google-maps-markers


【解决方案1】:

最初在括号内拆分值如下:

String example = "lat/lng:(35.000000,119.0000000)";
     Matcher m = Pattern.compile("\\(([^)]+)\\)").matcher(example);
     while(m.find()) {
       from_lat_lng = m.group(1) ;    
     }

一旦你有了带 lat,lon 的字符串,将其拆分并解析为双精度。

 String[] gpsVal = from_lat_lng.split(",");
            double lat = Double.parseDouble(gpsVal[0]);
            double lon = Double.parseDouble(gpsVal[1]);

在此之后,您可以在标记中使用 lat,lon,如下所示:

     Marker a = gMap.addMarker(new MarkerOptions().zIndex(100)
                .position(new LatLng(lat,lon))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多