2014-01-12 42 views
0

我正在嘗試此操作約4小時,但不會發生。試圖開發一個應用程序來顯示谷歌地圖中的特定位置。GoogleMap未顯示

做了下面的代碼:

GooglemapsActivity.java

package com.example.gps2; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import android.os.Bundle; 

public class GooglemapsActivity extends MapActivity { 

private MapView mapView; 
private MapController mc; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mapView = (MapView) findViewById(R.id.mapView); 
    mc = mapView.getController(); 

    String coordinates[] = {"30", "71"}; 
    double lat = Double.parseDouble(coordinates[0]); 
    double lng = Double.parseDouble(coordinates[1]); 

    GeoPoint p = new GeoPoint(
      (int) (lat * 1E6), 
      (int) (lng * 1E6)); 

    mc.animateTo(p); 
    mc.setZoom(7); 
    mapView.invalidate(); 
} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 
} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
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="AIzaSyBbGgoanloghVHc_rSHmS_yBG1Y7Ho7rsM" 
    /> 
</LinearLayout> 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.gps2" 
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_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

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

<uses-feature 
    android:name="android.hardware.location" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.location.network" 
    android:required="false" /> 
<uses-feature android:name="android.hardware.location.gps" /> 
<uses-feature 
    android:name="android.hardware.wifi" 
    android:required="false" /> 
<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.example.gps2.GooglemapsActivity" 
     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> 

</manifest> 

我正在使用Google API 18(平臺4.3)

我已經生成了使用SHA1代碼「B5:EE:A3:80:7C:11:16:21:D7:EC:95:D1:FE :03:79:3D:4F:92:2D:73; com.example.gps2"

我使用的AVD與目標谷歌API 18

畢竟這是沒有得到顯示谷歌地圖。用網格獲得屏幕。請建議我需要修復的地方以使其正常工作。

的logcat:

01-12 07:01:20.958: D/dalvikvm(993): GC_FOR_ALLOC freed 533K, 18% free 3207K/3864K, paused 51ms, total 56ms 
01-12 07:01:20.968: W/System.err(993): java.lang.IllegalStateException: Connection pool shut down. 
01-12 07:01:20.968: W/System.err(993): at org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:284) 
01-12 07:01:20.968: W/System.err(993): at org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1.getPoolEntry(ConnPoolByRoute.java:238) 
01-12 07:01:20.968: W/System.err(993): at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1.getConnection(ThreadSafeClientConnManager.java:176) 
01-12 07:01:20.968: W/System.err(993): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:326) 
01-12 07:01:20.968: W/System.err(993): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
01-12 07:01:20.968: W/System.err(993): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
01-12 07:01:20.968: W/System.err(993): at android_maps_conflict_avoidance.com.google.common.io.android.AndroidHttpClient.execute(AndroidHttpClient.java:246) 
01-12 07:01:20.978: W/System.err(993): at android_maps_conflict_avoidance.com.google.common.io.android.GoogleHttpClient.executeWithoutRewriting(GoogleHttpClient.java:129) 
01-12 07:01:20.978: W/System.err(993): at android_maps_conflict_avoidance.com.google.common.io.android.GoogleHttpClient.execute(GoogleHttpClient.java:189) 
01-12 07:01:20.978: W/System.err(993): at android_maps_conflict_avoidance.com.google.common.io.android.GoogleHttpClient.execute(GoogleHttpClient.java:242) 
01-12 07:01:20.978: W/System.err(993): at android_maps_conflict_avoidance.com.google.common.io.android.AndroidHttpConnectionFactory$AndroidGoogleHttpConnection.getResponse(AndroidHttpConnectionFactory.java:132) 
01-12 07:01:20.978: W/System.err(993): at android_maps_conflict_avoidance.com.google.common.io.android.AndroidHttpConnectionFactory$AndroidGoogleHttpConnection.openDataInputStream(AndroidHttpConnectionFactory.java:153) 
01-12 07:01:20.978: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:922) 
01-12 07:01:20.978: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702) 
01-12 07:01:20.988: W/System.err(993): at java.lang.Thread.run(Thread.java:841) 
01-12 07:01:31.467: W/MapActivity(993): Recycling dispatcher android_maps_conflict_a[email protected]41702a70 
01-12 07:01:31.507: V/MapActivity(993): Recycling map object. 
01-12 07:01:32.387: I/MapActivity(993): Handling network change notification:CONNECTED 
01-12 07:01:32.387: E/MapActivity(993): Couldn't get connection factory client 
01-12 07:01:51.737: W/System.err(993): IOException processing: 26 
01-12 07:01:51.737: W/System.err(993): java.io.IOException: Server returned: 3 
01-12 07:01:51.748: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115) 
01-12 07:01:51.758: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473) 
01-12 07:01:51.758: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117) 
01-12 07:01:51.758: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994) 
01-12 07:01:51.758: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702) 
01-12 07:01:51.758: W/System.err(993): at java.lang.Thread.run(Thread.java:841) 
01-12 07:02:15.378: W/System.err(993): IOException processing: 26 
01-12 07:02:15.378: W/System.err(993): java.io.IOException: Server returned: 3 
01-12 07:02:15.378: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115) 
01-12 07:02:15.389: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473) 
01-12 07:02:15.389: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117) 
01-12 07:02:15.389: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994) 
01-12 07:02:15.398: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702) 
01-12 07:02:15.398: W/System.err(993): at java.lang.Thread.run(Thread.java:841) 
01-12 07:02:44.837: W/System.err(993): IOException processing: 26 
01-12 07:02:44.837: W/System.err(993): java.io.IOException: Server returned: 3 
01-12 07:02:44.837: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115) 
01-12 07:02:44.847: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473) 
01-12 07:02:44.857: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117) 
01-12 07:02:44.857: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994) 
01-12 07:02:44.857: W/System.err(993): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702) 
01-12 07:02:44.867: W/System.err(993): at java.lang.Thread.run(Thread.java:841) 

謝謝...

+0

您是否檢查過此問題:http://stackoverflow.com/questions/7296467/google-map-signed-api-key-errors-in-android –

+0

請幫忙..... – saptarshi

回答

2

您正在弄清楚如何在應用程序中實現Google Maps API V2,並將API V1實現混淆了很多東西。

第一,顯示谷歌地圖在活動中,你通常會使用在你MapFragmentSupportMapFragment情況下(API < 11),所以你應該添加這個在你活動的XML佈局:

<fragment 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

接下來,你應該從inheritFramgnetActivity作爲API V2API V1反對MapActivity,所以你應該這樣做:

public class MapActivity extends FragmentActivity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map_layout); 
    } 
} 

最後,如前所述,您應該在清單文件中爲您提供API密鑰,而不是在您的xml文件中。所以把這個清單中的下application標籤範圍:

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

這:

<meta-data 
android:name="com.google.android.maps.v2.API_KEY" 
android:value="Your Google Maps API V2 Key" /> 

你可以找到在此博客文章中,我就這個話題寫了一個詳細的解釋:

Google Maps API V2 Guide

+0

謝謝....它幫助....但現在我面對另一個問題。我正在使用Genymotion虛擬設備並使用eclipse進行配置。當我從eclipse運行我的應用程序時,它工作得非常順利。之後,當我創建.apk文件並在genymotion AVD上單獨安裝時,它不起作用。我打開了GPS。請幫忙! – saptarshi

+0

如果將其安裝在真實設備上,會發生什麼情況?如果您尚未註冊您正在使用的release.key來通過Google API控制檯創建apk文件,則大多數情況下地圖可能無法正常工作。 –

+0

這就是我使用調試密鑰的原因....我需要獲得發行證書指紋。你能否給我一個例子讓釋放鍵的過程。謝謝...... – saptarshi

0
<permission 
    android:name="your_package_name.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature" /> 

嘗試把你的包名....

+0

更新: saptarshi

+0

I/Choreographer(1404):跳過了32幀!應用程序可能在其主線程上做了太多工作。 W/MapActivity(1404):回收調度員android_maps_conflict_a[email protected]416fe408 01-12 07:15:49.617:V/MapActivity(1404):回收地圖對象。 01-12 07:15:50.247:I/MapActivity(1404):處理網絡更改通知:已連接 E/MapActivity(1404):無法獲得連接工廠客戶端 I/Choreographer(1404):跳過了54幀!應用程序可能在其主線程上做了太多工作。 – saptarshi

+0

並且您是否將Google Play服務添加爲lib文件。項目引用你的項目... –

0

我建議你仔細按照安裝在https://developers.google.com/maps/documentation/android/start

從我看到您的清單中,您缺少

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

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

,並在推薦的佈局片段,而不是MapView類等。

0

您試圖在AVD讓地圖正確的,所以你可以參考this鏈接如何在模擬器中獲取地圖。

相關問題