在android地图上显示蓝色屏幕而不是地图
问题描述:
嗨全部 我有代码在地图上用标记显示两个位置,但它只显示标记,并且只显示蓝色地图。我在移动而不是模拟器上运行。在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());
}
}
}
答
如果你从外景经理的位置,并尝试使用坐标,不首先把它们就会发生这种情况:
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万以映射到正确的坐标。
答
您可以自定义的MapView颜色具有不同的坐标集,例如:
- 40.76793169992044,-173.98180484771729是blue,因为你经历
- -77.199943,11.913063是light gray
- 75.913515, - 30.443115是green
- 43.318418,11.331644是Siena
答
这可能意味着以下两种情况之一:
a。您的API密钥不正确
b。您的坐标设置为(0,0),地图标记指向海洋。尝试缩放地图。你可能会看到土地。 :)
该位置在太平洋的中间。海洋是蓝色的。哎呀:) – MadcoreTom 2011-05-05 05:16:42
感谢您的意见 – 2011-05-05 05:28:23