編輯:關於Android編程
android Map 開發之google Map 可參考文檔 鏈接
本文總結的是Android Map 開發之高德地圖,以下是詳細代碼及注釋:
如何把 API 添加到我的Android 工程中?
創建工程,將從網站下載的AMap_Android_Api_Lib 文件中的MapApi.jar 包拷貝到Libs 文件夾下,Libs 下的文件目錄如下所示:
MapApi.jar 下載鏈接
當MapApi.jar在Libs 文件夾中後,就表示將高德地圖Android API庫文件引入工程中了,您就可以在您的程序中使用高德地圖API 了。
在manifest 中設置相應的權限
下面介紹在程序開發中需注意的問題:必須在AndroidManifest.xml 中設置相應的權限,添加代碼如下:
[html]
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission
android:name="android.permission.INTERNET"></uses-permission>
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission
android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission
android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission
android:name="android.permission.INTERNET"></uses-permission>
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission
android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission
android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
注意此添加權限代碼與<application>同級。
柵格地圖顯示
MapActivity是一個抽象類,任何想要顯示MapView 的activity 都需要派生自MapActivity。並且在其派生類的onCreate() 中,都要創建一個MapView 實例。
[html]
public class GridMapView extends MapActivity{
private MapView mMapView;
private MapController mMapController;
private GeoPoint point;
@Override
/**
*顯示柵格地圖,啟用內置縮放控件,並用MapController 控制地圖的中心點及Zoom 級別
*/
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview); //布局文件夾 res/layout/mapview.xml 文件。
mMapView = (MapView) findViewById(R.id.mapView);
mMapView.setBuiltInZoomControls(true); //設置啟用內置的縮放控件
mMapController = mMapView.getController(); // 得到mMapView 的控制權,可以用它控制和驅動平移和縮放
point = new GeoPoint((int) (39.982378 * 1E6),
(int) (116.304923 * 1E6)); //用給定的經緯度構造一個GeoPoint,單位是微度(度* 1E6)
mMapController.setCenter(point); //設置地圖中心點
mMapController.setZoom(12); //設置地圖zoom 級別
}
}
public class GridMapView extends MapActivity{
private MapView mMapView;
private MapController mMapController;
private GeoPoint point;
@Override
/**
*顯示柵格地圖,啟用內置縮放控件,並用MapController 控制地圖的中心點及Zoom 級別
*/
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview); //布局文件夾 res/layout/mapview.xml 文件。
mMapView = (MapView) findViewById(R.id.mapView);
mMapView.setBuiltInZoomControls(true); //設置啟用內置的縮放控件
mMapController = mMapView.getController(); // 得到mMapView 的控制權,可以用它控制和驅動平移和縮放
point = new GeoPoint((int) (39.982378 * 1E6),
(int) (116.304923 * 1E6)); //用給定的經緯度構造一個GeoPoint,單位是微度(度* 1E6)
mMapController.setCenter(point); //設置地圖中心點
mMapController.setZoom(12); //設置地圖zoom 級別
}
}
在布局文件夾 res/layout/mapview.xml 文件中添加地圖控件代碼如下:
[html]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:autonavi="http://schemas.android.com/apk/res/com.AMap"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.amap.mapapi.map.MapView android:id="@+id/mapView"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:clickable="true"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:autonavi="http://schemas.android.com/apk/res/com.AMap"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.amap.mapapi.map.MapView android:id="@+id/mapView"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:clickable="true"
/>
</LinearLayout>
結果見圖3-1 柵格地圖顯示效果圖:
圖3-1 柵格地圖顯示效果圖
具體示例請查看參考示例 MapView 中的 GridMapView。
矢量地圖顯示
將libminimapv320.so 復制到工程目錄下的libs\armeabi,目錄結構見圖3-2
圖3-2 工程目錄結構圖
代碼如下:
[html]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vmapview);
mMapView = (MapView) findViewById(R.id.vmapView);
mMapView.setVectorMap(true);//設置地圖為矢量模式
mMapView.setBuiltInZoomControls(true); //設置啟用內置的縮放控件
mMapController = mMapView.getController(); // 得到mMapView的控制權,可以用它控制和驅動平移和縮放
point = new GeoPoint((int) (39.90923 * 1E6),
(int) (116.397428 * 1E6)); //用給定的經緯度構造一個GeoPoint,單位是微度 (度 * 1E6)
mMapController.setCenter(point); //設置地圖中心點
mMapController.setZoom(12); //設置地圖zoom級別
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vmapview);
mMapView = (MapView) findViewById(R.id.vmapView);
mMapView.setVectorMap(true);//設置地圖為矢量模式
mMapView.setBuiltInZoomControls(true); //設置啟用內置的縮放控件
mMapController = mMapView.getController(); // 得到mMapView的控制權,可以用它控制和驅動平移和縮放
point = new GeoPoint((int) (39.90923 * 1E6),
(int) (116.397428 * 1E6)); //用給定的經緯度構造一個GeoPoint,單位是微度 (度 * 1E6)
mMapController.setCenter(point); //設置地圖中心點
mMapController.setZoom(12); //設置地圖zoom級別
}
在前面的一篇文章中,簡單的介紹了一下如何實現軟鍵盤不自動彈出,使用的方法是設置android:windowSoftInputMode屬性。那麼,這個屬性到底是干什麼的,他
今天做一個小Demo用到了SoundPool,總結一下。MediaPlayer缺點:不能重疊播放音樂,封裝程度比較高,所以加載起來會比較慢。SoundPool簡介Andr
MainActivity如下:+currentStatus, Toast.LENGTH_SHORT).show(); } } } Sw
閒來無事,做了一個簡單的抽獎轉盤的ui實現,供大家參考package com.microchange.lucky; import android.content.Con