每次我设置标记时,然后单击按钮将距离发送到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仍在运行我的下一个活动,但我不知道如何停止。
//编辑:新活动是从打算开始的,通过饰面完成活动((不起作用。