Firebase and Google Map



每次我设置标记时,然后单击按钮将距离发送到firebase,我的Google Map刷新。

这是活动,我可能不是最好的代码,但我只是在学习。

public class Map extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private DatabaseReference mDatabase;
double latitude=38.9071923, longitude=-77.0368707;
double end_latitude, end_longitude;
Button calcbtn;
String username;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
    username = getIntent().getStringExtra("username");
    calcbtn = findViewById(R.id.calcbtn);
    mDatabase = FirebaseDatabase.getInstance().getReference()
    calcbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            float results[] = new float[10];
            Location.distanceBetween(latitude, longitude, end_latitude, end_longitude, results);
            Marker destination = mMap.addMarker(
                    new MarkerOptions().position(new LatLng(latitude, longitude)).title("Washington").snippet("Abstand: " + results[0] / 1000 + "Km!").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
            destination.showInfoWindow();
            mDatabase.child(username).child("Map").child("Score").setValue(results[0] / 1000);
            return;
       }
    });
}
@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    mMap.setMapType(mMap.MAP_TYPE_NORMAL);
    mMap.setMinZoomPreference(1.0f);
    mMap.setMaxZoomPreference(5.0f);
    MapStyleOptions style = MapStyleOptions.loadRawResourceStyle(Map.this, R.raw.style_jason);
    mMap.setMapStyle(style);
    mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latLng) {
            mMap.clear();
            Marker user_input = mMap.addMarker(
                    new MarkerOptions()
                            .position(latLng));
            end_latitude = user_input.getPosition().latitude;
            end_longitude = user_input.getPosition().longitude;
        }
    });
}

所有内容都可以作为Inivendet起作用,但是在按钮上,地图刷新了,就像我刚刚开始活动一样。所有其他Firebase实现都很好。

我将其范围缩小到上一个活动中的addValueEventListener。一旦在firebase中更改了一个值,它就会启动此活动。

所以上一个AddValueVentlistener仍在运行我的下一个活动,但我不知道如何停止。

//编辑:新活动是从打算开始的,通过饰面完成活动((不起作用。

最新更新