編輯:Android開發實例
一、在Google地圖上顯示本地的位置。
1、首先注意在AndroidManifest.xml文件中,增加權限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
在application中activity外,增加:uses-library
<uses-library android:name="com.google.android.maps" />
2、在類中,將extends Activity改為extends MapActivity
3、設置可放大縮小地圖的控件。
在xml文件中,添加以下內容:
<LinearLayout android:orientation="vertical"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/zoom" android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" >
</LinearLayout>
在類中,加入:
LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.displayZoomControls(true);
mapView.getController().setZoom(14);//設置縮放級別
p = this.getCurrentGeoPoint();
mapView.getController().animateTo(p);// 通過動畫方式移動到指定坐標s
4、通過以下方法得到當前位置的經緯度
private GeoPoint getCurrentGeoPoint() {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
return new GeoPoint((int) (location.getLatitude() * 1e6),
(int) (location.getLongitude() * 1e6));
}
5、通過以下方式顯示當前位置在地圖上顯示:
class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
//—translate the GeoPoint to screen pixels—
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
//—add the marker—
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.pushpin);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
}
在oncreate方法中,加入:
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
這樣就能在屏幕中顯示你當前位置的地圖顯示了;
如下圖:
源代碼見:http://henzil.googlecode.com/svn/trunk/android.googleMap01/
二、輸入地址,在地圖上顯示相應的位置。此方法是通過查詢地址名稱,返回一個list結果。在地圖上顯示:
此方法與上述方法基本一致,不同之處在於:是用getFromLocationName方法,來查詢目的地的經緯度。
如下代碼:
// 通過系統默認區域設置進行地圖定位
Geocoder gc = new Geocoder(this);
mapView.setStreetView(true);
try {
// 通過地址名稱描述返回一個查詢結果的數組(後面參數為返回最大結果數)
addresses = gc.getFromLocationName(address, 5);
// 如果未查詢到任何結果
if (addresses != null) {
geoPoint = new GeoPoint(
// 返回緯度,經度
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
setTitle(addresses.get(0).getFeatureName());
MyOverlay myOverlay = new MyOverlay();
mapView.getOverlays().add(myOverlay);
mapView.getController().setZoom(16);
mapView.getController().animateTo(geoPoint);
}
} catch (Exception e) {
e.printStackTrace();
}
如下圖所示:
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
觀察者模式定義: Define a one-to-many dependency between objects so that when one object
Android平台有三種網絡接口可以使用,他們分別是:java.net.*(標准Java接口)、Org.apache接口和Android.net.*(Androi
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用