要在Android用戶端顯示Google地圖,就要使用google 的API,這次使用的的不是Android 的SDK而是直接使得的Google的,因為沒有細究,所以他們之間具體有多少區別,現在還不太清楚,等有時間了,再仔細看一看,顯示地圖使用的是View為:com.google.android.maps.MapView 但是要使用的話,還得去google 申請一個Map的Key去,具體怎麼申請,這裡不再細說,不過個人感覺如果是測試的話,隨便找一個Key也是可以的沒有感覺到什麼不同,不知道發布的時候怎麼樣。
以面的做完之後,因為地圖使用的是網路,因此必須得有網路的存取權限,這個需要添加上去。否則無法得到地圖資訊。
下面 就是實現代碼:
首先定義地圖的控制器:
private MapController mapController;
private GeoPoint geoPoint; //這個表示的是定位中心點在代碼中有實現
然後就可以實現了!
下面是實現代碼:
代碼
setContentView(R.layout.main);
MapView mapView = (MapView)findViewById(R.id.mapview1);
mapController = mapView.getController();
mapView.setEnabled(true);
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
geoPoint = new GeoPoint((int)40.9166666666667*1000000,(int)116.816666666667*1000000);
mapController.animateTo(geoPoint);
mapController.setZoom(12);
如果要在某點顯示資訊的話,可以通過下面的函數進行設定:
代碼
class MyLocationOverlay extends Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
Paint paint = new Paint();
Point myScreenCoords = new Point();
// 將經緯度轉換成實際螢幕座標
mapView.getProjection().toPixels(geoPoint, myScreenCoords);
paint.setStrokeWidth(1);
paint.setARGB(255, 255, 0, 0);
paint.setStyle(Paint.Style.STROKE);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.home);
canvas.drawBitmap(bmp, myScreenCoords.x, myScreenCoords.y, paint);
canvas.drawText("要顯示的名稱", myScreenCoords.x, myScreenCoords.y, paint);
return true;
}
}
當然要顯示地圖,如果我們繼承的是Activity的話,是無法進行顯示的,所以要改為MapActivity,這也就是為什麼要使用google Api的原因了!
好了,這個地圖,結合前面講的GPS資訊擷取都已經實現了,再下面就可以實現通過GPS定位了,其實你只要把他們兩個結合起來就能實現定位了!