【发布时间】:2017-03-15 04:50:24
【问题描述】:
package com.example.dhrumit.google_maps;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
public FirebaseDatabase database;
public DatabaseReference mRef ;
public Query query;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
database = FirebaseDatabase.getInstance();
mRef = database.getReference().child("users");
query= mRef.orderByChild("phone");
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (DataSnapshot postDataSnapshot : dataSnapshot.getChildren())
{
Double Latitude = (Double) postDataSnapshot.child("latitude").getValue();
Double Longitude = (Double) postDataSnapshot.child("longitude").getValue();
String Name = (String) postDataSnapshot.child("name").getValue();
LatLng Location = new LatLng(Latitude, Longitude);
mMap.addMarker(new MarkerOptions().position(Location).title(Name));
builder.include(Location);
}
LatLngBounds bounds = builder.build();
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds,0);
mMap.animateCamera(cameraUpdate);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我已经编写了上面的代码来创建一个谷歌地图活动来显示带有标记的地图,标记的位置是从 firebase 数据库中获取的,但是 我遇到了如下所示的运行时错误。
java.lang.NoSuchMethodError: No virtual method zzTt()Z in class Lcom/google/firebase/FirebaseApp; or its super classes (declaration of 'com.google.firebase.FirebaseApp' appears in /data/app/com.example.dhrumit.google_maps-1/split_lib_dependencies_apk.apk:classes7.dex)
**at com.google.firebase.database.FirebaseDatabase.getInstance(Unknown Source)
at com.google.firebase.database.FirebaseDatabase.getInstance(Unknown Source)**
at com.example.dhrumit.google_maps.MapsActivity.onCreate(MapsActivity.java:35)
at android.app.Activity.performCreate(Activity.java:6033)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
【问题讨论】:
-
你能发布你正在使用的依赖项吗?
-
dependencies dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.google.android.gms:play-services-maps:10.2.0' compile 'com.google.firebase:firebase-database:10.0.1' testCompile 'junit:junit:4.12' }以上是我使用的依赖 @Minkoo -
尝试将所有依赖项放在同一级别。您的 firebase 级别为 10.0.1,gms 级别为 10.2.0。让它一样。
-
他们已经达到你提到的水平@Minkoo
-
尝试相同的播放服务和 firebase 版本。您的代码似乎有所不同。
标签: android google-maps firebase firebase-realtime-database