2011-05-05 116 views
3

嗨全部 我有代碼在地圖上用標記顯示兩個位置,但它只顯示標記,並且只顯示藍色地圖。我在移動而不是模擬器上運行。在android地圖上顯示藍色屏幕而不是地圖

我的代碼

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

}

+2

該位置在太平洋的中間。海洋是藍色的。哎呀:) – MadcoreTom 2011-05-05 05:16:42

+0

感謝您的意見 – 2011-05-05 05:28:23

回答

0

如果你從外景經理的位置,並嘗試使用座標,不首先把它們就會發生這種情況:

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

您可以自定義的MapView顏色具有不同的座標集,例如:

  • 40.76793169992044,-173.98180484771729是blue,因爲你經歷
  • -77.199943,11.913063是light gray
  • 75.913515, - 30.443115是green
  • 43.318418,11.331644是Siena
1

這可能意味着以下兩種情況之一:

a。您的API密鑰不正確

b。您的座標設置爲(0,0),地圖標記指向海洋。嘗試縮放地圖。你可能會看到土地。 :)