Google地图操作让我在Android中感到困惑

时间:2017-01-29 08:13:20

标签: android if-statement google-maps-android-api-2

我的应用程序中有这个看似简单的类。它只是在我的mapView Location添加一个圆圈,其圆圈颜色取决于该位置的CDMA signal Strength。或者这就是它应该做的事情。 如果我只要求一个圆圈和带有cdma信号的位置但是它不能用于if语句格式,即使只有一个else if存在,该应用程序也能正常工作。我的问题是为什么以及它是否与一次调用地图的次数有关。如果有人知道解决方法,那将会有很大帮助。

private GoogleMap mMap;
    int cdmaSignal;
    double latitude;
    double longitude;

    BroadcastReceiver br;



    @Override
    protected void onResume() {
        super.onResume();
        if(br == null){
            br = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent z) {


                    shoveItThrough((int) z.getExtras().get("cell signal cdma"),
                            (double) z.getExtras().get("latitude"), (double) z.getExtras().get("longitude"));
                    CameraPosition cameraPosition = new CameraPosition.Builder()
                            .target(new LatLng(latitude, longitude))      // Sets the center of the map to location user
                            .zoom(17)                   // Sets the zoom
                            .bearing(0)                // Sets the orientation of the camera to east
                            .tilt(30)                   // Sets the tilt of the camera to 30 degrees
                            .build();
                    //
                    //mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));


                    /*mMap.addCircle(new CircleOptions()
                            .center(new LatLng(latitude,longitude)).radius(80).strokeColor(Color.rgb(255,0,0)).fillColor(Color.rgb((255,0,0)));*/
                    //LatLng home = new LatLng(latitude, longitude);




                    //mMap.addMarker(new MarkerOptions().position(home));
                    if(cdmaSignal<=-120 && cdmaSignal>-100){
                        mMap.addCircle(new CircleOptions()
                                .center(new LatLng(latitude,longitude)).radius(80).strokeColor(Color.rgb(255,0,0)).fillColor(Color.rgb(255,0,0)));
                        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

                        /*LatLng home = new LatLng(latitude, longitude);

                        mMap.addMarker(new MarkerOptions().position(home));
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(home));*/
                    } else if(cdmaSignal<=-100 && cdmaSignal>-80){
                        mMap.addCircle(new CircleOptions()
                                .center(new LatLng(latitude,longitude)).radius(80).strokeColor(Color.rgb(255,98,12)).fillColor(Color.rgb(255,98,12)));
                        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

                        /*LatLng home = new LatLng(latitude, longitude);
                        mMap.addMarker(new MarkerOptions().position(home));
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(home));*/
                    } else if(cdmaSignal<=-80 && cdmaSignal>-60){
                        mMap.addCircle(new CircleOptions()
                                .center(new LatLng(latitude,longitude)).radius(80).strokeColor(Color.rgb(255,181,12)).fillColor(Color.rgb(255,181,12)));

                        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                        /*LatLng home = new LatLng(latitude, longitude);
                        mMap.addMarker(new MarkerOptions().position(home));
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(home));*/
                    } else if(cdmaSignal<=-60 && cdmaSignal>-40){
                        mMap.addCircle(new CircleOptions()
                                .center(new LatLng(latitude,longitude)).radius(80).strokeColor(Color.rgb(211,255,0)).fillColor(Color.rgb(211,255,0)));
                        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                        /*LatLng home = new LatLng(latitude, longitude);
                        mMap.addMarker(new MarkerOptions().position(home));
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(home));*/
                    } else if(cdmaSignal<=-40 && cdmaSignal>-20){
                        mMap.addCircle(new CircleOptions()
                                .center(new LatLng(latitude,longitude)).radius(80).strokeColor(Color.rgb(164,255,0)).fillColor(Color.rgb(164,255,0)));
                        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

                        /*LatLng home = new LatLng(latitude, longitude);

                        mMap.addMarker(new MarkerOptions().position(home));
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(home));*/
                    } else if(cdmaSignal<=-20 && cdmaSignal>-0){

                        mMap.addCircle(new CircleOptions()
                                .center(new LatLng(latitude,longitude)).radius(80).strokeColor(Color.rgb(0,255,0)).fillColor(Color.rgb(0,255,0)));
                        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                        /*LatLng home = new LatLng(latitude, longitude);

                        mMap.addMarker(new MarkerOptions().position(home));
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(home));*/
                    }


                }
            };
        }
        registerReceiver(br, new IntentFilter("location_update"));

    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // 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
    protected void onDestroy() {
        super.onDestroy();
        if(br != null){
            unregisterReceiver(br);
        }
    }
    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
    }

    public void shoveItThrough(int c, double la, double lo){
        cdmaSignal = c;
        latitude = la;
        longitude = lo;


    }



}

0 个答案:

没有答案