2013-04-24 53 views
0

我正在開發Android應用程序,其中需要顯示地圖。我工作了3天,但沒有得到任何積極的結果。如何在我的Android應用程序中集成G​​oogle地圖

我按照這個教程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創建了映射。任何一個可以幫我請...

+0

http://stackoverflow.com/a/14195573/513413 – Hesam 2013-04-24 04:19:23

回答

0

使用谷歌地圖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

的GoogleMap克;

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"/> 
0

使用此代碼爲谷歌地圖,我從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密鑰U可以打開androidhive.com並註冊到此..可以獲得關於谷歌地圖的教程

相關問題