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.) 你还没有初始化你的 MapController mc。如果你没有这样做。

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 回答