1

以下のコードでは、位置コントロールを使用して位置を切り替えると、マップの背景が黒くなります。マップ ビューの表示を元に戻すにはどうすればよいですか?

private class MyLocationListener implements LocationListener
        {
            public void onLocationChanged(Location loc)
            {
                if(loc!=null)
                {

                    Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());

                    try
                    {
                        List<Address> addresses = geocoder.getFromLocation(loc.getLatitude() / 1E6, loc.getLongitude() / 1E6, 1);
                        String add = "";
                        if (addresses.size() > 0)
                        {
                            for (int i =0;i<addresses.get(0).getMaxAddressLineIndex();i++)
                            {
                                add += addresses.get(0).getAddressLine(i) + "\n";
                            }
                        }
                        Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT).show();
                    }


                    catch(IOException e)
                    {
                        e.printStackTrace();
                    }

                }

                    p = new GeoPoint((int)(loc.getLatitude() * 1E6),
                            (int)(loc.getLongitude() * 1E6));

                    mc.animateTo(p);
                    mc.setZoom(18);
                }

            public void onProviderDisabled(String provider)
            {

            }

            public void onProviderEnabled(String provider)
            {

            }

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

            }

        }
4

1 に答える 1

0

マップが黒くなるだけなのか、画面が反応しなくなるのかについて言及していないため、マップが黒くなる、または画面全体が黒くなる(つまり応答しない)原因となる可能性のあるいくつかの原因があります。画面が応答しなくなります:

1.)MapControllermcを初期化していません。まだ行っていない場合は、それを行ってください。

2.)このコード行は正しくないようです:

 List<Address> addresses = geocoder.getFromLocation(
                           loc.getLatitude() / 1E6, loc.getLongitude() / 1E6, 1);

このコードが間違っていると思う理由は、loc.getLatitude()が緯度を度の形式で返すためです(18.9647のようなものなので、1E6で割ると、非常に少ない数値が得られると思います。あなたが考えていたものではないので、1E6で割らないでください。

于 2012-08-18T18:10:00.057 に答える