Android, Google Maps не будет отображаться - PullRequest
0 голосов
/ 08 апреля 2011

Я создаю приложение, которое должно показывать местоположение, которое я определяю с широтой и долготой. Все идет хорошо, он открывает карты Google на экране моего приложения, но карты не отображаются! Это код, который я использую ...

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;
    }
}

Ответы [ 6 ]

3 голосов
/ 08 апреля 2011

Ключ MD5 не будет работать на разных машинах.

Вам необходимо сгенерировать ключ отладки MD5 для текущего SDK, который вы используете.

Сгенерируйте ключ отладки для вашего текущего компьютера и попробуйте снова.

0 голосов
/ 31 июля 2013

Даже при использовании Google API Введение У меня были такие проблемы.

Я следовал этому учебнику, и он работал для меня:

http://www.vogella.com/articles/AndroidGoogleMaps/article.html

Удачи,

0 голосов
/ 08 апреля 2011

Я думаю, что это проблема вашей версии эмулятора. Эмуляторы Android SDK 2.2 иногда не показывают точное местоположение. Попробуйте запустить эмулятор 2.1.

0 голосов
/ 08 апреля 2011

Вам необходимо получить ключ для доступа к карте Google в вашем приложении, и после получения ключа вы должны добавить библиотеку в файл манифеста, который будет установлен автоматически, когда вы получите ключ.

0 голосов
/ 08 апреля 2011

Проверьте следующую запись блога, в которой перечислены причины, которые могут вызвать эту проблему.http://blog.doityourselfandroid.com/2011/01/18/using-google-maps-in-your-android-app/

Помимо действия, это также манифест, макет или ключ API, который может быть недействительным.

Короче говоря

  • Требуется Android SDKбыть настроен на поддержку Google Maps.
  • Компонент MapView необходимо добавить в макет, содержащий действительный ключ API Карт Google
  • Активность, которая будет отвечать за отображение карты, должна быть расширена от MapActivity
  • Манифест приложения должен быть настроен с разрешением android.permission.INTERNET
  • Манифест приложения должен быть настроен с библиотекой com.google.android.maps

В вашемв данном случае это, скорее всего, подключение к Интернету (разрешение в манифесте и / или эмуляторе), или недействительный ключ API.Помните, что ключ API связан с сертификатом, который используется для подписи вашего APK.

0 голосов
/ 08 апреля 2011

Получите API ключ здесь

http://code.google.com/apis/maps/signup.html

Поместите следующее правило в свой AndroidManifest

<uses-permission android:name="android.permission.INTERNET" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...