Android浏览地图

时间:2012-08-18 07:43:10

标签: android eclipse android-emulator

在下面的代码中,当我使用位置控件切换位置时,​​地图的背景变为黑色。如何才能显示地图视图?

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)
            {

            }

        }

1 个答案:

答案 0 :(得分:0)

以下是一些可能导致地图变黑或整个屏幕变黑(即无响应)的事情,因为您没有提到地图是否变黑或屏幕变得反应迟钝我要去假设屏幕无响应:

1。)您尚未初始化MapController mc。如果你没有,那就这样做。

2。)这行代码似乎不正确:

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

我怀疑这段代码错误的原因是因为loc.getLatitude()会以度数的形式返回一个纬度(类似于18.9647,所以如果你将它除以1E6,你将获得一个非常小的数字我怀疑不是你想到的,所以不要除以1E6。