当前位置:操作系统 > 安卓/Android >>

Android Map 开发之高德地图

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); 
 &nbs

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,