无法使用groundOverlay在Android地图api v2上显示图像

时间:2013-03-19 10:46:26

标签: android api google-maps android-maps-v2

我在android中使用了二手map api v2。我可以使用地面覆盖在地图上加载图像,但图像显示的非常小。我需要在mapview上完整加载图片,例如覆盖整个地图区域。有人可以帮我这个.. Here is the image我想加载地图 谢谢你提前...

public class GroundOverlayDemoActivity extends FragmentActivity implements OnSeekBarChangeListener {

    private static final int TRANSPARENCY_MAX = 100;
    private static final LatLng NEWARK = new LatLng(40.714086, -74.228697);
    //private static final LatLng NEWARK = new LatLng(18.5236, 73.8478);

    private GoogleMap mMap;
    private GroundOverlay mGroundOverlay;
    private SeekBar mTransparencyBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ground_overlay_demo);

        mTransparencyBar = (SeekBar) findViewById(R.id.transparencySeekBar);
        mTransparencyBar.setMax(TRANSPARENCY_MAX);
        mTransparencyBar.setProgress(0);

        setUpMapIfNeeded();
    }

    @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }

    private void setUpMapIfNeeded() {
        if (mMap == null) {
            mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                .getMap();
            if (mMap != null) {
                setUpMap();
            }
        }
    }

    private void setUpMap() {
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(NEWARK, 8));


        mGroundOverlay = mMap.addGroundOverlay(new GroundOverlayOptions().image(BitmapDescriptorFactory.fromResource(R.drawable.omnistar_hp)).anchor(0, 1).position(NEWARK, 8600000f, 6500000f));
    //.position(NEWARK, 9999999.0f));//, 10000000f));

        mTransparencyBar.setOnSeekBarChangeListener(this);
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {}

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {}

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        if (mGroundOverlay != null) {
            mGroundOverlay.setTransparency((float) progress / (float) TRANSPARENCY_MAX);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

        import android.support.v4.app.FragmentActivity;
        import android.support.v4.app.FragmentManager;
        import android.util.Log;
        import android.util.TypedValue;
        import android.view.Menu;
        import android.view.MenuItem;





        public class MapDisplayActivity extends FragmentActivity implements         OnMapClickListener, OnMapLongClickListener  {
        private GoogleMap myMap;

        private static  LatLng SearchPlace;
        double Latitude;
        double Longitiude;
        List<Address> addresses;

        //Address location;
        BitmapDescriptor image;
    /// private static final LatLng NEWARK = new LatLng(18.5236, 73.8478);


            private GroundOverlay mGroundOverlay;

            //this is for omnistarg dont touch this 
            LatLng southwest= new LatLng(-85.513398,-178.242187);

            LatLng northeast= new LatLng(85.513398,178.242187);

         float zoomValue = 7.0f;
        private String SpinerValue;
        private Bitmap bitmap;
            @Override
            `enter code here`protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mapactivity);
        //VMRuntime.getRuntime().setMinimumHeapSize(4 * 1024 * 1024);
        Log.v("Utils", "Max mem in MB : " +    (Runtime.getRuntime().maxMemory()/(1024*1024)));
        Runtime.getRuntime().maxMemory();
        Debug.getNativeHeapSize();

        initActionBar();

        //textInfo=(TextView)findViewById(R.id.locinfo);

           FragmentManager myFragmentManager = getSupportFragmentManager();
           SupportMapFragment mySupportMapFragment 
            = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
           myMap = mySupportMapFragment.getMap();





          // myMap.setMyLocationEnabled(true);


          // myMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
           myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
          // myMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
           //myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);


           myMap.setOnMapClickListener(this);
           myMap.setOnMapLongClickListener(this);
           myMap.getUiSettings().setZoomControlsEnabled(true);
           myMap.getUiSettings().setMyLocationButtonEnabled(true);

           Intent intent=getIntent();
           Latitude=intent.getDoubleExtra("Latitude", 0.000);
           Longitiude=intent.getDoubleExtra("Longititude", 0.000);
           SpinerValue=(String)intent.getStringExtra("SPINNERVALUE");

           SearchPlace = new LatLng(Latitude, Longitiude);

           myMap.moveCamera(CameraUpdateFactory.newLatLng(SearchPlace));
           myMap.addMarker(new   MarkerOptions().position(SearchPlace));//.title(PlaceName));
           drawImageOverMap();

//         BitmapFactory.Options opts=new BitmapFactory.Options();
//         opts.inDither=false;                     //Disable Dithering mode
//         opts.inPurgeable=true;        
//         opts.inSampleSize=8;
//        Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.omnistar_g);

    }



    public void drawImageOverMap(){

           myMap.animateCamera(CameraUpdateFactory.zoomTo(zoomValue));

                //image =BitmapDescriptorFactory.fromResource(R.drawable.omnistar_g);
           if(SpinerValue.equalsIgnoreCase("TEC")){
               //centerpoint_vrs
               bitmap =   (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.omnistar_two);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        //.transparency(0.4f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));

           }
           else if(SpinerValue.equalsIgnoreCase("OmniSTARG2")){
               bitmap = (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.omnistar_g_img);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        .transparency(0.4f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));
           }
           else if(SpinerValue.equalsIgnoreCase("OmniStarHP")){
               bitmap = (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.omnistar_hp_two);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        .transparency(0.4f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));
           }
           /////////////////////////////////////////////
           else if(SpinerValue.equalsIgnoreCase("OmniStarVBS")){
               bitmap = (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.omnistar_vbs_two);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        .transparency(0.4f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));

           }
           else if(SpinerValue.equalsIgnoreCase("OmniSTARXP")){
               bitmap = (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.omnistar_xp_two);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        .transparency(0.4f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));
           }
           else if(SpinerValue.equalsIgnoreCase("RTXStandardviaCellular")){
              //rtxcell 
               bitmap = (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.rtx_cell_two);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        .transparency(0.3f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));
           }
           else if(SpinerValue.equalsIgnoreCase("RTXFastviaSatellite")){
               //rtxfast.png
               bitmap = (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.rtx_fast_two);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        .transparency(0.3f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));
           }
           else if(SpinerValue.equalsIgnoreCase("RTXStandardviaSatellite")){
               //rtxsat.png
               bitmap = (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.rtx_sat_two);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        .transparency(0.3f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));
           }
           else if(SpinerValue.equalsIgnoreCase("VRSNow")){
               //vrsnowtec.png
               bitmap = (Bitmap)BitmapFactory.decodeResource(this.getResources(), R.drawable.vrsnow_tec_two);


                BitmapFactory.Options o2 = new BitmapFactory.Options();
                 o2.inSampleSize=4;
                 image=BitmapDescriptorFactory.fromBitmap(bitmap);
                    LatLngBounds bounds =new LatLngBounds( southwest,  northeast);


                    mGroundOverlay  = myMap.addGroundOverlay(new GroundOverlayOptions()
                        .image(image)
                        .transparency(0.3f)

                        //.anchor(0, 1)
                        .positionFromBounds(bounds));
           }
                        // InputStream is =getClass().getResourceAsStream(omnistar_g);
                        //bitmap = readAssetsBitmap("omnistar_g.png");
                         //bitmap =  BitmapFactory.decodeResource(this.getResources(), R.drawable.trimble_screen_logo);
                         //bitmap=bitmap(is);


                         //image =BitmapDescriptorFactory.fromResource(R.drawable.omnistar_g);


                                 bitmap.recycle();
                                 bitmap = null;
                                 System.gc();
                                 Runtime.getRuntime().gc(); 



    }