Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android MapView does not load unless you touch on the mapview

I have added a mapview in my android application.I have used correct settings in the manifest and now i'm facing a problem. When i go to the place where i have my map,it displays only the canvas but not the map. If i touch on it only it starts loading. Even then it does not fully load.it loads only to a certain level.if i keep touching the screen it continuously loads. But even then i cannot zoom in or out OR cant even move the map. Is there a solution for this? Have i done something wrong?

My Code

            MapView mapView;
            GoogleMap map;





             mapView = (MapView)view.findViewById(R.id.map);
             Bundle savedInstanceState = null;
            mapView.onCreate(savedInstanceState);

                // Gets to GoogleMap from the MapView and does initialization stuff
                map = mapView.getMap();
                map.getUiSettings().setMyLocationButtonEnabled(false);
                map.setMyLocationEnabled(true);

                MapsInitializer.initialize(activity);

                double lat;
                double lon;

                lat = Double.parseDouble(theaterDetail.getLatitude());
                lon = Double.parseDouble(theaterDetail.getLongitude());

                // Updates the location and zoom of the MapView
                map.addMarker(new MarkerOptions().position(
                        new LatLng(lat, lon)).title(theaterDetail.getAddress()));

                final LatLng THEATER_POSITION = new LatLng(lat, lon);

                CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(THEATER_POSITION) // Sets the center of the map to
                                                    // THEATER_POSITION
                        .zoom(10) // Sets the zoom
                        .bearing(360) // Sets the orientation of the camera to east
                        .tilt(30) // Sets the tilt of the camera to 30 degrees
                        .build(); // Creates a CameraPosition from the builder
                        map.animateCamera(CameraUpdateFactory
                        .newCameraPosition(cameraPosition));

xml

<com.google.android.gms.maps.MapView 
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_weight="1"/>  

manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.***.***"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"
        />

     <permission
    android:name="com.***.***.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

     <uses-permission android:name="com.***.***.permission.MAPS_RECEIVE" />






    <application
        android:name="com.***.***.service.CommonVariable"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppBaseTheme"
        android:hardwareAccelerated="true" >

        <meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />


        <!-- <uses-library android:name="com.google.android.maps" />  --> 

        <activity
            android:name="com.***.***.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.Sherlock.Light.DarkActionBar"
            android:windowSoftInputMode="adjustPan" 
            android:hardwareAccelerated="true">
        </activity>

        <activity 
             android:name="com.***.***.Map"
            android:label="@string/app_name"
            android:theme="@style/Theme.Sherlock.Light.DarkActionBar" ></activity>

        <activity
            android:name="com.***.***.WelcomeActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.Sherlock.NoActionBar"
            android:hardwareAccelerated="true" >
            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
                    android:name="com.google.android.maps.v2.API_KEY"
                    android:value="*********************" />


    </application>

</manifest>
like image 268
CraZyDroiD Avatar asked Jan 12 '15 05:01

CraZyDroiD


People also ask

What is the requirement for setting up your map SDK?

To run an app that uses the Maps SDK for Android, you must deploy it to an Android device or Android emulator that is based on Android 4.0 or higher and includes the Google APIs.

Does Google Location Sharing drain battery?

Share this story First discovered by Android Police, your friend's battery level will be included in the set of information you receive when they share their location with you. It's a helpful addition for keeping tabs on your friends and ensuring they're safe.

What is MapView?

A View which displays a map (with data obtained from the Google Maps service). When focused, it will capture keypresses and touch gestures to move the map.


1 Answers

Though this is an old question, I am providing here what worked for me. The reason that this solution works is that it overrides the onResume() handler. If you are using a mapView, you need to call mapView.onResume() from the onResume() handler. Example:

@Override
public void onResume() {
    mMapView.onResume();
    super.onResume();
}
like image 87
Joy Patra Avatar answered Sep 21 '22 07:09

Joy Patra