Android Map 開發之高德地圖

來源:互聯網
上載者:User

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層級  
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.