0

以前のアプリで一度行ったマップビューを表示する必要があるAndroidアプリを開発していますが、前に使用したキーが彼のアプリで機能していません。空白の画面でアプリケーションにピンが表示されているだけです。プロジェクトごとに異なるマップキーを使用する必要がありますか?そうでない場合は、これで以前のキーを使用する方法を教えてください。また、新しいキーを生成しようとしましたが、同じキーを返しました。

これが私が使ったコードです

  public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);
        btn=(Button)findViewById(R.id.mapbtn);
        str1=getIntent().getStringExtra("LATITUDE");
        str2=getIntent().getStringExtra("LONGITUDE");





        mapView =  (MapView)findViewById(R.id.mapView1);
        //View zoomView = mapView.getZoomControls(); 

        mapView.setBuiltInZoomControls(true);
         //mapView.setSatellite(true);
         mc = mapView.getController();
         btn.setOnClickListener(this);

          MapOverlay mapOverlay = new MapOverlay();
            List<Overlay> listOfOverlays = mapView.getOverlays();
            listOfOverlays.clear();
            listOfOverlays.add(mapOverlay); 


            String coordinates[] = {str1,  str2};
            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();

        //mp.equals(o);
    }
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        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);                   
            Paint mPaint = new Paint();
            mPaint.setDither(true);
            mPaint.setColor(Color.RED);
            mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
            mPaint.setStrokeJoin(Paint.Join.ROUND);
            mPaint.setStrokeCap(Paint.Cap.ROUND);
            mPaint.setStrokeWidth(2);

            //---translate the GeoPoint to screen pixels---
            Point screenPts = new Point();
            mapView.getProjection().toPixels(p, screenPts);

            //---add the marker---
            Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pin);            
            canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);         
            return true;
        }

ありがとう....

4

3 に答える 3

3
amandeep there are two kinds of key for maps debug key and release key 
debug key is for your system on which you are developping your application 
that can be used for every application and the seconde one is release key that is different for every application and for each application you have to create new one

http://code.google.com/android/add-ons/google-apis/mapkey.html

デバッグと署名キーの違い

于 2012-04-06T05:25:21.543 に答える
1

マップ キーは、Java ライブラリ、JDK などすべてが含まれているため、単一のマシンにのみ制限されます。したがって、debug.keystore も単一のファイルであり、これにより、常に一意のマップ キーを取得できます。

マシン (CPU) をシフトするか、OS を再インストールする場合にのみ、新しいマップ キーを生成する必要があります。

オーバーレイのコードを削除して、もう一度確認するというもう1つのアドバイスは、正常に機能することです。または、Overlay Class に問題があります。アプリケーションをクリーンアップして再構築します。

これらの許可も与えていただければ幸いです。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
于 2012-04-06T05:24:48.500 に答える
0

エミュレーターでアプリを実行しようとしていますか? はいの場合は、デフォルトのキーを使用します。apk をサインアウトし、デバイスで実行している場合は、最後のアプリで使用したのと同じキーを使用して署名し、生成された Google マップ API キーを使用します。出力としてグリッドを取得していますか?? 考えられる 2 つの理由 キーまたはインターネット (プロキシ経由のインターネット)

于 2012-04-06T07:04:02.320 に答える