2011-04-08 144 views
0

我正在製作一個應用程序,需要顯示我用經度和緯度定義的位置。一切都很好,它會在我的應用程序屏幕上打開Goog​​le地圖,但地圖不會顯示出來! 這是我使用的代碼...Android,谷歌地圖不會顯示

public class MapsActivity extends MapActivity { 

MapView mapView; 
MapController mc; 
GeoPoint p; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //vraag custom title bar 
    requestCustomTitle(); 
    setContentView(R.layout.mapsactivity); 
    //Titel dynamisch invullen volgens taalvoorkeuren, roept methode setCustomTitle op 
    setCustomTitle(getResources().getString(R.string.MapsTitel)); 


    showZoom(); 
    locate(getIntent().getStringExtra("kantoorLat"), getIntent().getStringExtra("kantoorLng")); 
    addMarker(); 

} 
/* 
* De methode showZoom zorgt ervoor dat de zoombuttons worden getoond 
*/ 

private void showZoom(){ 
    mapView = (MapView) findViewById(R.id.mapView); 
    LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom); 
    View zoomView = mapView.getZoomControls(); 

    zoomLayout.addView(zoomView, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    mapView.displayZoomControls(true); 
} 

/* 
* De methode locate zorgt ervoor dat de juiste locatie wordt getoond 
*/ 
private void locate(String strlat, String strlng){ 
    mc = mapView.getController(); 
    String coordinates[] = {strlat,strlng}; 
    double lat = Double.parseDouble(coordinates[0]); 
    double lng = Double.parseDouble(coordinates[1]); 

    p = new GeoPoint((int)(lat * 1E6), (int)(lng * 1E6)); 
    mc.animateTo(p); 
    mc.setZoom(17); 
    mapView.invalidate(); 
} 

/* 
* De methode addMarker zorgt ervoor dat er een indicator staat op de locatie 
*/ 
private void addMarker(){ 
    MapOverlay mapOverlay = new MapOverlay(); 
    List<Overlay> listOfOverlays = mapView.getOverlays(); 
    listOfOverlays.clear(); 
    listOfOverlays.add(mapOverlay); 
} 

protected boolean isRouteDisplayed(){ 
    return false; 
} 

class MapOverlay extends com.google.android.maps.Overlay{ 
    @Override 
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when){ 
     super.draw(canvas, mapView, shadow); 

     Point screenPts = new Point(); 
     mapView.getProjection().toPixels(p,screenPts); 

     Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.accentindicator); 
     canvas.drawBitmap(bmp, screenPts.x+7, screenPts.y-19, null); 
     return true; 
    } 
} 
+1

,所以你看到的只是電網吧?你有沒有指定地圖API密鑰? – WarrenFaith 2011-04-08 09:54:40

+2

你給了正確的API密鑰嗎?和'InternetPermissions'到您的應用程序? – 2011-04-08 09:57:07

+0

我在佈局XML文件中指定了我的API密鑰。我看到了網格,Google的徽標和我的標記。 – Hannelore 2011-04-08 09:57:45

回答

3

MD5鍵不能在不同的機器上工作。

您需要爲您當前使用的SDK生成MD5調試密鑰。

生成當前機器的調試密鑰,然後重試。

+0

我嘗試了一個新的MD5鍵,但沒有奏效。 – Hannelore 2011-04-08 11:32:40

+1

我不得不再次替換debug.keystore,現在我很好,非常感謝! – Hannelore 2011-04-08 11:53:59

+1

嘿我的榮幸.. :) – Harshad 2011-04-08 12:18:55

0

檢查以下博客條目列出了m的原因導致這個問題。 http://blog.doityourselfandroid.com/2011/01/18/using-google-maps-in-your-android-app/

除了活動,它也可以是無效的清單,佈局或API密鑰。

總之

  • Android的SDK需要設置到 支持谷歌地圖。
  • 一個MapView 組件需要添加到您的 佈局,包含一個有效的谷歌 Maps API密鑰
  • 將 負責顯示地圖 需要從MapActivity
  • 的 適用範圍擴大的活動清單需要被 設置與 android.permission.INTERNET對 許可
  • 應用程序清單 需要設置與 com.google.android.maps庫

在你的情況,很可能是因爲互聯網連接(在未經許可的清單中和/或模擬器互聯網接入)或無效的API密鑰。請記住,API密鑰已鏈接到用於簽署APK的證書。

+0

我在本教程後生成了我的API密鑰:[link] http://mobiforge.com/developing/story/using-google-maps-android 它已經工作過,但現在它沒有。我使用SVN客戶端與我的合作伙伴合作。我要求一個新的密鑰,但它仍然不起作用。它只顯示一個網格,Google徽標,縮放條和我的標記。 – Hannelore 2011-04-08 11:45:56

0

您需要獲取鑰匙才能在您的應用程序中訪問Google地圖,獲取鑰匙後您必須在ue清單文件中添加庫,該庫將在您獲得鑰匙時自動安裝。

0

我認爲它是你的模擬器版本problem.Android sdk 2.2仿真器有時並沒有顯示確切的位置。嘗試運行模擬器2.1。

+0

我的模擬器是Google API級別4 – Hannelore 2011-04-08 11:34:21