0

Google マップを使用してロケーション ビューを表示するアプリを開発しました。スタック オーバーフローや Google から多くの有用な概念を見つけました。これらすべてに従って、アプリを正常に実装しました。アプリはバグなしで実行されています。適切なマップが表示されません。

私が得ている出力:

ここに画像の説明を入力

ここに私のJavaファイルがあります:

    package com.mapactivity;

import java.util.List;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.KeyEvent;

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 com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;

public class MainActivity extends MapActivity implements LocationListener{

    MapView mapView;
    MapController mc;
    GeoPoint gp;
    MyLocationOverlay compass;
    long start;
    long stop;

    Drawable d;
    List<Overlay> overlayList;
    LocationManager lm;
    String towers;
    /*int lat;
    int longi;*/

    int x,y;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

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

        mapView.setTraffic(true);
        mapView.setBuiltInZoomControls(true);
        mapView.setSatellite(true);


        mc = mapView.getController();

        String cordinate[] = {"28.636041","77.223957"};

        double lat = Double.parseDouble(cordinate[0]);
        double lng = Double.parseDouble(cordinate[1]);

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

        mc.animateTo(gp);
        mc.setZoom(13);


        MapOverlay mo = new MapOverlay();
        List<Overlay> list = mapView.getOverlays();
        list.clear();
        list.add(mo);

        mapView.invalidate();


    }

    public boolean onKeyDown(int keyCode,KeyEvent event)
    {
        mc = mapView.getController();
        switch (keyCode) {
        case KeyEvent.KEYCODE_3:
            mc.zoomIn();

            break;

        case KeyEvent.KEYCODE_1:
            mc.zoomOut();
        }
        return super.onKeyDown(keyCode, event);

    }
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
    private class MapOverlay extends com.google.android.maps.Overlay
    {

        @Override
        public boolean draw(Canvas canvas, MapView mapview, boolean shadow, long when) {
            // TODO Auto-generated method stub
            super.draw(canvas, mapview, shadow);

            Point screenPoint = new Point();
            mapview.getProjection().toPixels(gp, screenPoint);
            Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.marker_landmark);
            canvas.drawBitmap(bmp, screenPoint.x, screenPoint.y-50,null);

            return true;

        }

    }

    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub

    }

    @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

    }

}

また、マニフェスト ファイルにもすべてのアクセス許可を与えましたが、正しいものを取得していません。どこが間違っているのか教えてください。

4

4 に答える 4

0

Google マップ V1 API ドキュメントには、次のように記載されています。

Google Maps Android API のバージョン 1 は、2012 年 12 月 3 日に正式に廃止されました。つまり、2013 年 3 月 18 日以降、このバージョンの API キーをリクエストできなくなります。Google Maps Android API v1 に新しい機能が追加される予定はありません。ただし、v1 を使用するアプリは引き続きデバイスで動作します。既存および新規のデベロッパーは、Google Maps Android API v2 を使用することをお勧めします。

2013 年 3 月 18 日より前にキーが生成された古い Google MAP API で正常に動作するのは、これらのアプリケーションのみです。

古い廃止された API を使用して現在アプリを開発しているので、新しいバージョンの API キーを生成したと思いますが、古い API 実装でそれを使用しようとしています。新しい API キーは、古い API では機能しません。

新しいアプリケーションにはGoogle マップ V2を使用することをお勧めします。

于 2013-09-25T10:48:57.500 に答える
0

V2 を使用します。Google マップ v1 は廃止され、キーは 2013 年 2 月から 3 月自体に維持されなくなりました

Google マップ v2 の場合、2 つのキーがあります。キーをデバッグしてリリースします。デバッグ キーは一般的ですが、署名済み apk を使用する場合は、リリース キーを使用しないと、マップが空白に見えます。

解除キーの手順はこちら。

Google マップ Android API v2 は、プレイ ストア アプリケーションでマップを表示できません

于 2013-09-25T10:41:05.110 に答える