In android map shows a blue screen instead of a map

hello everyone I have a code to display two places on the map with a marker, but it shows only a marker, and only a blue screen is displayed on the map. I am running on a mobile not an emulator.

my code

 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());
    }
}

}

+3
source share
3 answers

This can mean one of the following two things:

and. Invalid API Code

b. Your coordinates are set to (0, 0), and the map marker points to the ocean. Try zooming in on the map. You will probably see the land. :)

+1
source

This can happen if you get the location from the location manager and try to use the coordinates without first converting them:

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

, 1 .

0

You can customize the color of the MapView with various sets of coordinates, for example:

  • 40.76793169992044, -173.98180484771729 blue , how did you survive
  • -77.199943,11.913063 light gray
  • 75.913515, -30.443115 green
  • 43.318418,11.331644 Siena
0
source

All Articles