首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android地图显示蓝屏,而不是地图

Android地图显示蓝屏,而不是地图
EN

Stack Overflow用户
提问于 2011-05-05 13:06:32
回答 2查看 1.9K关注 0票数 3

我有在地图上用标记显示两个位置的代码,但它只显示标记,而不是地图,它只显示一个蓝色屏幕。我是在手机上运行的,而不是模拟器。

我的代码:

public class HelloGoogleMaps3 extends MapActivity {
    private MapView map=null;
    private MyLocationOverlay me=null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

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

        map.getController().setCenter(getPoint
                (40.76793169992044,-173.98180484771729));
        map.getController().setZoom(17);
        map.setBuiltInZoomControls(true);

        Drawable marker=getResources().getDrawable(R.drawable.marker);

        marker.setBounds(0, 0, marker.getIntrinsicWidth(),
                        marker.getIntrinsicHeight());

        map.getOverlays().add(new SitesOverlay(marker));

        me=new MyLocationOverlay(this, map);
        map.getOverlays().add(me);
    }

    @Override
    public void onResume() {
        super.onResume();

        me.enableCompass();
    }       

    @Override
    public void onPause() {
        super.onPause();

        me.disableCompass();
    }       

    @Override
    protected boolean isRouteDisplayed() {
        return(false);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_S) {
            map.setSatellite(!map.isSatellite());
            return(true);
        }
        else if (keyCode == KeyEvent.KEYCODE_Z) {
            map.displayZoomControls(true);
            return(true);
        }

        return(super.onKeyDown(keyCode, event));
    }

    private GeoPoint getPoint(double lat, double lon) {
        return(new GeoPoint((int)(lat*1000000.0),
                            (int)(lon*1000000.0)));
    }

    private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
        private List<OverlayItem> items=new ArrayList<OverlayItem>();
        private Drawable marker=null;

        public SitesOverlay(Drawable marker) {
            super(marker);
            this.marker=marker;

            items.add(new OverlayItem(getPoint
                    (40.748963847316034,-173.96807193756104),
                                "UN", "United Nations"));
            items.add(new OverlayItem(getPoint
                    (40.76866299974387,-173.98268461227417),
                                "Lincoln Center",
                                "Home of Jazz at Lincoln Center"));
            items.add(new OverlayItem(getPoint
                    (40.765136435316755,-173.97989511489868),
                                "Carnegie Hall",
                        "Where you go with practice, practice, practice"));
            items.add(new OverlayItem(getPoint
                    (40.70686417491799,-174.01572942733765),
                                "The Downtown Club",
                        "Original home of the Heisman Trophy"));

            populate();
        }

        @Override
        protected OverlayItem createItem(int i) {
            return(items.get(i));
        }

        @Override
        public void draw(Canvas canvas, MapView mapView,
                                        boolean shadow) {
            super.draw(canvas, mapView, shadow);

            boundCenterBottom(marker);
        }

        @Override
        protected boolean onTap(int i) {
            Toast.makeText(HelloGoogleMaps3.this,
                                items.get(i).getSnippet(),
                                Toast.LENGTH_SHORT).show();

            return(true);
        }

        @Override
        public int size() {
            return(items.size());
        }
    }
}

我做错什么了?

EN

回答 2

Stack Overflow用户

发布于 2016-03-30 04:04:38

这可能意味着以下两种情况中的任何一种:

a.您的API密钥不正确

b.您的坐标设置为(0,0),并且地图标记指向海洋。请尝试放大地图。你可能会看到陆地。:)

票数 1
EN

Stack Overflow用户

发布于 2012-04-21 04:54:59

如果您从位置管理器获取位置并尝试使用坐标,而不先转换坐标,则可能会发生这种情况:

Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// location.getLatitude() is, say, 56.8751841974
// location.getLongitude() is, say, -3.9548756201
GeoPoint mapPoint = new GeoPoint((int)(location.getLatitude() * 1E6), (int)(location.getLongitude() * 1E6));

基本上,您需要将这些值乘以100万才能映射到正确的坐标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5892902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档