Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 地图活动每隔几秒钟放大一次_Java_Android_Google Maps - Fatal编程技术网

Java 地图活动每隔几秒钟放大一次

Java 地图活动每隔几秒钟放大一次,java,android,google-maps,Java,Android,Google Maps,我的应用程序中有一个地图活动,我试图在打开地图活动时,它会自动放大到我的位置,但每隔几秒钟就会放大一次 这是我的代码: public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private static final String FIREBASE_URL="https://****.firebaseio.com/"; private Firebase firebaseRef; priv

我的应用程序中有一个地图活动,我试图在打开地图活动时,它会自动放大到我的位置,但每隔几秒钟就会放大一次

这是我的代码:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private static final String FIREBASE_URL="https://****.firebaseio.com/";
private Firebase firebaseRef;
private LocationManager locationManager;
private GoogleMap mMap;

@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);
    setUpMapIfNeeded();
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker marker) {
            final String title = marker.getTitle().toString();

            firebaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot user : dataSnapshot.child("users").getChildren()) {
                        String event_title = user.child("event/event_title").getValue().toString();
                        if (title.equals(event_title)) {

                            String event_date = user.child("event/event_date").getValue().toString();
                            String event_content = user.child("event/event_content").getValue().toString();
                            String age_limit = user.child("event/age_limit").getValue().toString();
                            String event_hour = user.child("event/event_hour").getValue().toString();
                            String location_left = user.child("location_left").getValue().toString();
                            String location_right = user.child("location_right").getValue().toString();
                            final SharedPreferences sp = getSharedPreferences("key", 0);
                            final SharedPreferences.Editor sedt = sp.edit();

                            sedt.putString("event_title", event_title);
                            sedt.putString("event_date", event_date);
                            sedt.putString("event_content", event_content);
                            sedt.putString("age_limit", age_limit);
                            sedt.putString("event_hour", event_hour);
                            sedt.putString("location_left", location_left);
                            sedt.putString("location_right", location_right);
                            sedt.commit();

                        }

                    }
                    Intent intent = new Intent(MapsActivity.this, EventInfo.class);
                    startActivity(intent);
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {

                }
            });



    return true;
        }
    });

}

private void setUpMapIfNeeded() {
    if (mMap == null) {
        // Try to obtain the map from the SupportMapFragment.
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                .getMap();
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            mMap.setMyLocationEnabled(true);
        } else {
            Toast.makeText(MapsActivity.this, "You have to accept!", Toast.LENGTH_LONG).show();
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                    == PackageManager.PERMISSION_GRANTED) {
                mMap.setMyLocationEnabled(true);
            }
        }

        if (mMap != null) {


            mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {

                @Override
                public void onMyLocationChange(Location arg0) {

                    CameraUpdate center= CameraUpdateFactory.newLatLng(new LatLng(arg0.getLatitude(), arg0.getLongitude()));
                    CameraUpdate zoom=CameraUpdateFactory.zoomTo(12);

                    mMap.moveCamera(center);
                    mMap.animateCamera(zoom);
                }
            });

        }
    }
}


@Override
public void onMapReady(final GoogleMap googleMap) {

    mMap=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 event_title = child.child("event/event_title").getValue().toString();
                LatLng cod = new LatLng(location_left, location_right);
                googleMap.addMarker(new MarkerOptions().position(cod).title(event_title));


            }
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });


}
}

我可以猜这是我的
setupmapifneedd()
方法中的一个问题,但我找不到问题所在


我做错了什么?

问题是由以下代码引起的

                CameraUpdate center= CameraUpdateFactory.newLatLng(new LatLng(arg0.getLatitude(), arg0.getLongitude()));
                CameraUpdate zoom=CameraUpdateFactory.zoomTo(12);
                mMap.moveCamera(center);
                mMap.animateCamera(zoom);
当位置发生任何变化时,将调用onMyLocationChange侦听器

所以,如果您需要将地图中心更改为最新位置,则必须编写代码来检查前一位置之间的实际位移


如果确实发生了位移,则只有您可以更改地图的中心和缩放。

好的,那么我可以在代码中更改什么使其工作?删除此代码。mMap.setOnMyLocationChangeListener(新建GoogleMap.OnMyLocationChangeListener(){@Override public void onMyLocationChange(位置arg0){CameraUpdate center=CameraUpdate工厂.newLatLng(新建LatLng(arg0.getLatitude(),arg0.getLongitude());CameraUpdate zoom=CameraUpdateFactory.zoomTo(12);mMap.moveCamera(中心);mMap.animateCamera(缩放);});