2011-12-14 2 views
0

Я хочу сделать приложение GPS, и я начинаю с этого кода, который является копией в другом учебнике. Но когда я тестирую приложение, это пустое пространство, и карта не появляется! Может кто-нибудь помочь пожалуйста ?? !!Android GPS-карты

Вот код

package com.manita.mapuse; 

import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.widget.Toast; 

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



public class MapuseActivity extends MapActivity implements LocationListener { 
    private MapView mapView = null; 
    private LocationManager lm = null; 
    private double lat = 0; 
    private double lng = 0; 
    private MapController mc = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mapView = (MapView) this.findViewById(R.id.mapView); 
    mapView.setBuiltInZoomControls(true); 

    lm = (LocationManager) this.getSystemService(LOCATION_SERVICE); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this); 
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, this); 

    mc = mapView.getController(); 
    mc.setZoom(12); 
    } 

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

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
    if (keyCode == KeyEvent.KEYCODE_S) 
    { 
    mapView.setSatellite(!mapView.isSatellite()); 
    return true; 
    } 
    return super.onKeyDown(keyCode, event); 
    } 

    @Override 
    public void onLocationChanged(Location location) 
    { 
    lat = location.getLatitude(); 
    lng = location.getLongitude(); 
    Toast.makeText(getBaseContext(), 
    "Location change to : Latitude = " + lat + " Longitude = " + lng, 
    Toast.LENGTH_SHORT).show(); 
    GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
    mc.animateTo(p); 
    mc.setCenter(p); 
    } 

    @Override 
    public void onProviderDisabled(String provider) 
    { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) 
    { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) 
    { 
    // TODO Auto-generated method stub 

    } 
} 

Вот manifest.xml

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

    <uses-sdk android:minSdkVersion="7" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <uses-library android:name="com.google.android.maps" /> 
     <activity 
      android:label="@string/app_name" 
      android:name=".MapuseActivity" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_GPS" /> 
<uses-permission android:name="android.permission.LOCATION" /> 
</manifest> 

и это мой MainActivity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainlayout" 
    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="@string/mapKey" 
/> 
    <LinearLayout android:id="@+id/zoom" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     /> 

</RelativeLayout> 

Спасибо.

+2

Проверьте ключ API Google MAP. – Arslan

+0

У меня есть ключ к моей карте, который я получил отсюда [http://code.google.com/intl/fr/android/maps-api-signup.html] !! –

+0

Является ли это ключом, генерируемым от ключа отладки? Если не карты на эмуляторе не будут показывать какие-либо данные, но плитки ... – Prasham

ответ

0

Я предполагаю, что вы тестируете код на эмуляторе. Посмотрите на это: http://blogspot.fluidnewmedia.com/2009/04/displaying-google-maps-in-the-android-emulator/

+0

Я тестирую AVD да! У меня есть мой mapkey, он работал один раз, но я несколько раз менял свой код, не знаю, что случилось, что я сделал! Могу ли я получить более одной карты? или только один? если да, то как я могу получить еще один md5 ?? !!! –

+0

Вы выполнили инструкции по этой ссылке. keytool.exe -list -alias androiddebugkey -keystore "C: \ path_to_android \ debug.keystore" -storepass android -keypass android –

+0

yess я сделал !! Я думал, что могу получить больше одного отпечатка md5! но это только один! @Noureddine AMRI –

0

Подтвердили ли, что вы зарегистрировались в системе Android для Android по адресу: http://code.google.com/android/maps-api-signup.html?

Это необходимо сделать, чтобы воспользоваться услугой.

+0

да я !! @bvd –

0

Если ваше приложение белое, одно из возможных решений - создать новый ключ API для карт Google. У меня была такая же точная проблема. После того, как вы создали его, положите его в манифест, и вы хорошо пойдете.

Смежные вопросы