2011-02-01 4 views
0

Я новичок в Android. Я пробовал много дней, чтобы сделать очень базовое приложение для карт Google, но не смог его завершить ... :(
В коде нет ошибок, эмулятор работает нормально с терминала, Карта ключ тоже прекрасен, но все же я не в состоянии увидеть карту. Когда я запускаю мое приложение только появится сетка и карта не отображаются. Вот код, может любого тела, пожалуйста, помогите мне.google map в android application

public class HelloGoogleMaps extends MapActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     MapView mapView =(MapView)findViewById(R.id.mapview); 
     mapView.setBuiltInZoomControls(true); 
    } 
    protected boolean isRouteDisplayed(){ 
     return false; 
    } 
} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<com.google.android.maps.MapView 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/mapview" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:clickable="true" 
      android:apiKey="0fyF-qSuCtdQinoUGoFbLxZoTx10Tm-YV6m6A8g" 
/> 

файл манифеста

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

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

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <uses-library android:name="com.google.android.maps" /> 
     <uses-permission android:name="android.permission.INTERNET"/> 
     <activity android:name=".HelloGoogleMaps" 
       android:label="@string/app_name" 
       android:theme="@android:style/Theme.NoTitleBar"> 
     <!--<activity android:name=".HelloGoogleMaps" 
        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> 
    <uses-sdk android:minSdkVersion="4" /> 
</manifest> 

Не знаю, где что-то не так. Я использую eclipse and android 1.6

+0

У вас есть значок 3G в панели уведомлений? Карты Google нуждаются в Интернете для работы. –

+0

[1] Убедитесь, что вы используете правильный ключ API. [2] Двойная проверка, добавили ли вы необходимое разрешение ИНТЕРНЕТ в AndroidMenifest.xml –

+0

@Sarwar Erfan, у нее есть разрешение INTERNET в манифесте, файл указан. –

ответ

0

Вы используете правильный ключ Google Maps - если вы используете отладочный ключ, карты, похоже, не работают.

Возможно, вам придется восстановить ключ без флага -debug.

может быть, это поможет: Android MapView - tiles not loading with Debug API key

+0

Я использую правильный ключ Google Maps – Sonia

0

Общие вопросы, которые вы используете неправильный эмулятор (т.е. не в API, Google один), имеют неправильный импорт, имеют неверный ключ API, не имеют права в манифесте, не использует библиотеку и т.д.

Я написал Новенькое руководство по этому вопросу, посмотри http://www.jameselsey.co.uk/blogs/techblog/android-how-to-display-a-map-the-easy-way/

1

попробуйте установить разрешение Интернет вне тега приложения

0

Я думаю, проблема в том, что вы используете неправильный apk. Вы должны использовать apk, сгенерированный эмулятором (затмение в моем случае), а не apk, сгенерированный с использованием опции «export». Я думаю, что проблема связана с ключом, используемым для экспорта apk, это не то же самое, что ключ api google maps. Попробуй.

PS: извините за мой плохой английский.

0

Я недавно прошел через все эти. Я также попробовал все упомянутое, но все, что сработало, -

Убедитесь, что вы не за прокси-сервером и не удаляете никаких настроек прокси-сервера, которые вы создали на эмуляторе. Есть ошибка, которую Google Maps не работает на эмуляторах Android за прокси-сервером.

1
**// Activty** 
    public class MapsActivity extends MapActivity { 

      private MapController mapController; 
      private MapView mapView; 
      private LocationManager locationManager; 
      private MyOverlays itemizedoverlay; 
      private MyLocationOverlay myLocationOverlay; 

      public void onCreate(Bundle bundle) { 
       super.onCreate(bundle); 
       setContentView(R.layout.main); // bind the layout to the activity 

       // Configure the Map 
       mapView = (MapView) findViewById(R.id.map_container); 
       mapView.setBuiltInZoomControls(true); 
      // mapView.setSatellite(true); 
       mapView.setStreetView(true); 

       mapController = mapView.getController(); 
       mapController.setZoom(14); // Zoon 1 is world view 
       locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 
         0, new GeoUpdateHandler()); 

       myLocationOverlay = new MyLocationOverlay(this, mapView); 
       mapView.getOverlays().add(myLocationOverlay); 

       myLocationOverlay.runOnFirstFix(new Runnable() { 
        public void run() { 
         mapView.getController().animateTo(myLocationOverlay.getMyLocation()); 
        } 
       }); 

       Drawable drawable = this.getResources().getDrawable(R.drawable.map); 
       itemizedoverlay = new MyOverlays(this, drawable); 
       createMarker(); 
      } 


      protected boolean isRouteDisplayed() { 
       return false; 
      } 

      public class GeoUpdateHandler implements LocationListener { 


       public void onLocationChanged(Location location) { 
        int lat = (int) (location.getLatitude() * 1E6); 
        int lng = (int) (location.getLongitude() * 1E6); 
        GeoPoint point = new GeoPoint(lat, lng); 
        createMarker(); 
        mapController.animateTo(point); // mapController.setCenter(point); 

       } 


       public void onProviderDisabled(String provider) { 
       } 


       public void onProviderEnabled(String provider) { 
       } 


       public void onStatusChanged(String provider, int status, Bundle extras) { 
       } 
      } 

      private void createMarker() { 
       GeoPoint p = mapView.getMapCenter(); 
       OverlayItem overlayitem = new OverlayItem(p, "", ""); 
       itemizedoverlay.addOverlay(overlayitem); 
       if (itemizedoverlay.size() > 0) { 
        mapView.getOverlays().add(itemizedoverlay); 
       } 
      } 


      protected void onResume() { 
       super.onResume(); 
       myLocationOverlay.enableMyLocation(); 
       myLocationOverlay.enableCompass(); 
      } 


      protected void onPause() { 
       super.onPause(); 
       myLocationOverlay.disableMyLocation(); 
       myLocationOverlay.disableCompass(); 
      } 
     } 

    **//Class MyOvelays** 

     public class MyOverlays extends ItemizedOverlay<OverlayItem> { 

      private static int maxNum = 5; 
      private OverlayItem overlays[] = new OverlayItem[maxNum]; 
      private int index = 0; 
      private boolean full = false; 
      private Context context; 
      private OverlayItem previousoverlay; 

      public MyOverlays(Context context, Drawable defaultMarker) { 
       super(boundCenterBottom(defaultMarker)); 
       this.context = context; 
      } 

      @Override 
      protected OverlayItem createItem(int i) { 
       return overlays[i]; 
      } 

      @Override 
      public int size() { 
       if (full) { 
        return overlays.length; 
       } else { 
        return index; 
       } 

      } 

      public void addOverlay(OverlayItem overlay) { 
       if (previousoverlay != null) { 
        if (index < maxNum) { 
         overlays[index] = previousoverlay; 
        } else { 
         index = 0; 
         full = true; 
         overlays[index] = previousoverlay; 
        } 
        index++; 
        populate(); 
       } 
       this.previousoverlay = overlay; 
      } 

      protected boolean onTap(int index) { 
       OverlayItem overlayItem = overlays[index]; 
       Builder builder = new AlertDialog.Builder(context); 
       builder.setMessage("This will end the activity"); 
       builder.setCancelable(true); 
       builder.setPositiveButton("I agree", new OkOnClickListener()); 
       builder.setNegativeButton("No, no", new CancelOnClickListener()); 
       AlertDialog dialog = builder.create(); 
       dialog.show(); 
       return true; 
      }; 

      private final class CancelOnClickListener implements 
        DialogInterface.OnClickListener { 
       public void onClick(DialogInterface dialog, int which) { 
        Toast.makeText(context, "You clicked yes", Toast.LENGTH_LONG) 
          .show(); 
       } 
      } 

      private final class OkOnClickListener implements 
        DialogInterface.OnClickListener { 
       public void onClick(DialogInterface dialog, int which) { 
        Toast.makeText(context, "You clicked no", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 


    //Main.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/map_container" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:apiKey="0PYAmXmindXBuvCvIFhCUC3y0GNjJKuFJHclkVw" 
         android:clickable="true" 
         android:focusable="true" 
         android:keepScreenOn="true" 


         /> 


     </RelativeLayout> 

    //Android.mainifest 



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

      <uses-sdk android:minSdkVersion="10" /> 
      <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"/> 


      <application 
       android:icon="@drawable/ic_launcher" 
       android:label="@string/app_name" > 
       <uses-library android:name="com.google.android.maps" /> 
       <activity 
        android:name=".MapsActivity" 
        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> 
+0

У меня есть работа с этим кодом, это работает Правильно для создания карты Google в android –