Java 如何从Firebase数据添加Google地图标记?
我正在尝试创建一个从Firebase加载标记的地图 我已经将位置代码分为两种不同的代码:位置左和位置右 这意味着普通标记线将如下所示:Java 如何从Firebase数据添加Google地图标记?,java,android,google-maps,firebase,Java,Android,Google Maps,Firebase,我正在尝试创建一个从Firebase加载标记的地图 我已经将位置代码分为两种不同的代码:位置左和位置右 这意味着普通标记线将如下所示: LatLng cod = new LatLng(location_left, location_right); googleMap.addMarker(new MarkerOptions().position(cod).title(party_title)); 但它不起作用。应用程序崩溃 代码如下: public class
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();
删除此行:
private GoogleMap mMap=((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
删除这一行
private GoogleMap mMap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap()代码>@antonio非常感谢你,它很有效!顺便问一下,当地图打开时,我如何使我的地图活动集中于我的位置(使用我上面附加的代码)?这对我很有帮助,我寻找了一个答案,但找不到有效的答案。使用此方法:私有void positionCamera(LatLng origin,LatLng dest){LatLngBounds.Builder=new LatLngBounds.Builder();Builder.include(origin);if(dest!=null)Builder.include(dest);LatLngBounds bounds=builder.build();mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds,30));}mMap是你的谷歌地图对象;将其替换为ur var名称;dest u可以传递null;如果你想放大到一个location@DJphy感谢您的commnet,我使用了您编写的方法,但是当我在onCreate中使用该方法时,我不知道在源和目标中放置什么。删除这行private GoogleMap mMap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap()代码>@antonio非常感谢你,它很有效!顺便问一下,当地图打开时,我如何使我的地图活动集中于我的位置(使用我上面附加的代码)?这对我很有帮助,我寻找了一个答案,但找不到有效的答案。使用此方法:私有void positionCamera(LatLng origin,LatLng dest){LatLngBounds.Builder=new LatLngBounds.Builder();Builder.include(origin);if(dest!=null)Builder.include(dest);LatLngBounds bounds=builder.build();mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds,30));}mMap是你的谷歌地图对象;将其替换为ur var名称;dest u可以传递null;如果你想放大到一个location@DJphy谢谢你的commnet,我使用了你写的方法,但是当我在onCreate中使用这个方法时,我不知道在origin和dest中放什么。