位置未显示在地图上

我试图通过从 Firebase 实时数据库中检索 Double 值来显示地图上的位置。但是当我启动地图活动时,当 Firebase 中存储了一个 Double 值时,位置位于 0.0,0.0。

我尝试了不同的代码来检索位置,但它们都没有在地图上显示正确的位置。感谢任何帮助。



哆啦的时光机
浏览 152回答 4
4回答

吃鸡游戏

无需DataSnapshot使用方法遍历对象getChildren(),只需使用以下代码行即可:DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();DatabaseReference busRef = rootRef.child("Locations").child("BUS11");ValueEventListener valueEventListener = new ValueEventListener() {    @Override    public void onDataChange(DataSnapshot ds) {        double lat = ds.child("latitude").getValue(Double.class);        double lng = ds.child("longitude").getValue(Double.class);        LatLng latLng = new LatLng(lat, lng);        mMap.addMarker(new MarkerOptions().position(latLng).title("BUS11"));        Log.d(TAG, lat + ", " + lng);    }    @Override    public void onCancelled(@NonNull DatabaseError databaseError) {        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!    }};busRef.addListenerForSingleValueEvent(valueEventListener);使用此代码的结果将是在您的地图上添加一个标记,并在 logcat 中打印以下行:13.0641221, 80.2500812

慕哥6287543

从 android O 你应该像这样开始你的服务:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {    context.startForegroundService(intent);}else {    context.startService(intent);}在你的情况下FreshchatService。

千巷猫影

从 firebase 获取位置时,您没有刷新地图。您只是将位置存储在全局变量中您的代码获取纬度和经度也是错误的。下面的代码应该工作for (DataSnapshot snapm: dataSnapshot.getChildren()) {     String key = snapm.getKey();     if(key.equalsIgnoreCase("latitude")){        lati=snapm.getValue(Double.class);     }     if(key.equalsIgnoreCase("longitude")){        longi=snapm.getValue(Double.class);     }}     // add this code here if (mMap != null) {   LatLng sydney = new LatLng(lati,longi);   mMap.addMarker(new MarkerOptions().position(sydney).title(vali));   mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); }

Smart猫小萌

对于 8.0 之前的设备,您必须只使用 startService(),但对于 7.0 之后的设备,您必须使用 startForgroundService()。这是启动服务的代码示例。if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {        context.startForegroundService(new Intent(context, ServedService.class));    } else {        context.startService(new Intent(context, ServedService.class));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java