【问题标题】:How to add Google Maps marker from Firebase data?如何从 Firebase 数据添加谷歌地图标记?
【发布时间】:2016-03-18 12:33:44
【问题描述】:

我正在尝试创建一个从 Firebase 加载标记的地图。

我将位置代码分为 2 个不同的代码:location_left 和 location_right。

这意味着正常的标记线将如下所示:

 LatLng cod = new LatLng(location_left, location_right);
                googleMap.addMarker(new MarkerOptions().position(cod).title(party_title));

但它不起作用。应用程序崩溃。

这是代码:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
    private static final String FIREBASE_URL="https://haerev.firebaseio.com/";
    private Firebase firebaseRef;
    private GoogleMap mMap=((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps2);
        Firebase.setAndroidContext(this);
        firebaseRef = new Firebase(FIREBASE_URL);

        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(final GoogleMap googleMap) {
        firebaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot child : dataSnapshot.child("users").getChildren()) {
                    String rightLocation = child.child("location_right").getValue().toString();
                    String leftLocation = child.child("location_left").getValue().toString();

                    double location_left = Double.parseDouble(leftLocation);
                    double location_right = Double.parseDouble(rightLocation);
                    String party_title = child.child("party/party_title").getValue().toString();
                    LatLng cod = new LatLng(location_left, location_right);
                    googleMap.addMarker(new MarkerOptions().position(cod).title(party_title));
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });
    }
}

【问题讨论】:

  • 删除此行private GoogleMap mMap=((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
  • @antonio 非常感谢它的工作!顺便说一句,当地图打开时,我怎样才能让我的地图活动专注于我的位置(使用我上面附加的代码)?这对我很有帮助,我正在寻找答案,但找不到有效的答案。
  • 使用这个方法: private void positionCamera(LatLng origin, LatLng dest){ LatLngBounds.Builder builder = new LatLngBounds.Builder(); builder.include(origin); if(dest != null) builder.include(dest); LatLngBounds 边界 = builder.build(); mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 30)); }
  • mMap 是你的谷歌地图对象;将其替换为您的 var 名称; dest 你可以传递null;如果你想放大到一个位置
  • @DJphy 感谢您的 commnet,我使用了您编写的方法,但是当我在 onCreate 中使用该方法时,我不知道在原点和终点放什么。

标签: java android google-maps firebase


【解决方案1】:

删除这一行:

private GoogleMap mMap=((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多