【问题标题】:How to integrate Google maps in my Android App如何在我的 Android 应用程序中集成 Google 地图
【发布时间】:2013-04-24 03:50:16
【问题描述】:

我正在开发需要显示地图的 Android 应用程序。我工作了 3 天来整合,但没有得到任何积极的结果。

我遵循了本教程Google Maps Android API v2。但是当我运行我的应用程序时。它只是将例外作为

IOException processing: 26
java.io.IOException: Server returned: 3
at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)

这是我的代码:

活动:

public class DisplayMap extends  MapActivity{

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mapView);
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

    <com.google.android.maps.MapView 
        android:id="@+id/mapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:enabled="true"
        android:clickable="true"
        android:apiKey="AIzaSyA1MXQ1Hc4-VhOOfItFHA1WCsGFUGcJ-BQ"
        />

</RelativeLayout>

清单:

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

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

    <permission
        android:name="com.rakhi577.maptest.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.rakhi577.maptest.permission.MAPS_RECEIVE"/>
    <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"/>
    <!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
    <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"/>


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="com.google.android.maps" />
        <activity
            android:name="com.rakhi577.maptest.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyA1MXQ1Hc4-VhOOfItFHA1WCsGFUGcJ-BQ"/>


</manifest>

我使用 debug.keystore 创建了地图。谁能帮帮我...

【问题讨论】:

标签: android google-maps android-maps


【解决方案1】:

使用谷歌地图 v2

      <fragment  
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
       android:layout_below="@id/rg_views"
      android:name="com.google.android.gms.maps.SupportMapFragment"
      />

和 A.java

谷歌地图通用;

gm = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();

可以在此查看完整的教程。 http://www.vogella.com/articles/AndroidGoogleMaps/article.html

还有在清单文件中,要授予的权限集

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

<uses-permission android:name="android.permission.INTERNET"/>
<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"/>

【讨论】:

    【解决方案2】:

    将此代码用于谷歌地图我正在从 androidhive.com 执行此操作

    import com.google.api.client.googleapis.GoogleHeaders;
    import com.google.api.client.http.GenericUrl;
    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestFactory;
    import com.google.api.client.http.HttpRequestInitializer;
    import com.google.api.client.http.HttpTransport;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.http.json.JsonHttpParser;
    import com.google.api.client.json.jackson.JacksonFactory;
    
    @SuppressWarnings("deprecation")
    public class GooglePlaces {
    
        /** Global instance of the HTTP transport. */
        private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
    
        // Google API Key
        private static final String API_KEY = "AIzaSyCRLa4LQZWNQBcjCYcIVYA45i9i8zfClqc";
    
        // Google Places serach url's
        private static final String PLACES_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/search/json?";
        private static final String PLACES_TEXT_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/search/json?";
        private static final String PLACES_DETAILS_URL = "https://maps.googleapis.com/maps/api/place/details/json?";
    
        private double _latitude;
        private double _longitude;
        private double _radius;
    
        /**
         * Searching places
         * @param latitude - latitude of place
         * @params longitude - longitude of place
         * @param radius - radius of searchable area
         * @param types - type of place to search
         * @return list of places
         * */
        public PlacesList search(double latitude, double longitude, double radius, String types)
                throws Exception {
    
            this._latitude = latitude;
            this._longitude = longitude;
            this._radius = radius;
    
            try {
    
                HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
                HttpRequest request = httpRequestFactory
                        .buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
                request.getUrl().put("key", API_KEY);
                request.getUrl().put("location", _latitude + "," + _longitude);
                request.getUrl().put("radius", _radius); // in meters
                request.getUrl().put("sensor", "false");
                if(types != null)
                    request.getUrl().put("types", types);
    
                PlacesList list = request.execute().parseAs(PlacesList.class);
                // Check log cat for places response status
                Log.d("Places Status", "" + list.status);
                return list;
    
            } catch (HttpResponseException e) {
                Log.e("Error:", e.getMessage());
                return null;
            }
    
        }
    
        /**
         * Searching single place full details
         * @param refrence - reference id of place
         *                 - which you will get in search api request
         * */
        public PlaceDetails getPlaceDetails(String reference) throws Exception {
            try {
    
                HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
                HttpRequest request = httpRequestFactory
                        .buildGetRequest(new GenericUrl(PLACES_DETAILS_URL));
                request.getUrl().put("key", API_KEY);
                request.getUrl().put("reference", reference);
                request.getUrl().put("sensor", "false");
    
                PlaceDetails place = request.execute().parseAs(PlaceDetails.class);
    
                return place;
    
            } catch (HttpResponseException e) {
                Log.e("Error in Perform Details", e.getMessage());
                throw e;
            }
        }
    
        /**
         * Creating http request Factory
         * */
        public static HttpRequestFactory createRequestFactory(
                final HttpTransport transport) {
            return transport.createRequestFactory(new HttpRequestInitializer() {
                public void initialize(HttpRequest request) {
                    GoogleHeaders headers = new GoogleHeaders();
                    headers.setApplicationName("AndroidHive-Places-Test");
                    request.setHeaders(headers);
                    JsonHttpParser parser = new JsonHttpParser(new JacksonFactory());
                    request.addParser(parser);
                }
            });
        }
    
    }
    

    对于 api 密钥你可以打开 androidhive.com 并注册到这个..你可以得到关于谷歌地图的教程

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 2016-02-29
      • 2014-12-21
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多