高德地图SDK使用说明

一,高德地图部分视频看这里教学视频连接

二、我们在不熟悉的情况下、先尽量多的添加此软件应用权限;所以在mainifest中添加如下代码;插入的位置在

<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>  

三、接着就要在res文件下的layout中添加界面布局了。其代码如下、你可以完全复制进去。

Java代码

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    >  
 <!--添加文本输入框,查找地址-->  
 <LinearLayout   
    android:layout_height="wrap_content"   
    android:layout_width="wrap_content" android:orientation="horizontal"   
    xmlns:android="http://schemas.android.com/apk/res/android"   
    android:layout_gravity="center_horizontal">  
    <TextView android:layout_height="wrap_content"   
    android:layout_width="wrap_content"   
    android:text="经度"/>  
    <EditText android:layout_height="fill_parent"   
    android:layout_width="100px"   
    android:id="@+id/longitude"/>  
    <TextView android:layout_height="wrap_content"   
    android:layout_width="wrap_content"   
    android:text="纬度"/>  
    <EditText android:layout_height="fill_parent"   
    android:layout_width="100px"   
    android:id="@+id/latitude"/>  
    <Button android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:text="查找"  
    android:id="@+id/button"/>  
    </LinearLayout>     

   <com.amap.mapapi.map.MapView android:id="@+id/mapView"    
android:layout_width="fill_parent" android:layout_height="fill_parent"     
android:clickable="true"       
/>   
</LinearLayout>  

四、最后就是软件的主程序部分了、里面需要的类和方法不多,主要以按钮的监听器和地图的界面实现为主

Java代码

public void onCreate(Bundle savedInstanceState) {  
        // this.setMapMode(MAP_MODE_VECTOR);//设置地图为矢量模式  

        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  

        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)  
        // 按钮添加监听器  
        button_location = (Button) findViewById(R.id.location);  
        longitude = (EditText) findViewById(R.id.longitude);  
        latidute = (EditText) findViewById(R.id.latitude);  
        locationListener = new OnClickListener() {  
            public void onClick(View e) {  
                if (e.equals(button_location)) {  
                    // 得到文本输入框的中经纬 度坐标值  
                    String latStr = longitude.getText().toString();  
                    // 将得到的字符串转成数值  
                    double lat = Integer.parseInt(latStr);  
                    String lngStr = latidute.getText().toString();  
                    double lng = Integer.parseInt(lngStr);  
                    //转成经纬度坐标  
                    lat=lat*1E6;  
                    lng=lng*1E6;  
                        // 用给定的经纬度构造一个GeoPoint,单位是微度(度*1E6)  
                        point = new GeoPoint((int) (lat), (int) (lng));  
                        mMapController.setCenter(point); // 设置地图中心点  
                        mMapController.setZoom(12); // 设置地图zoom 级别  
                        // 添加地图覆盖物  
//                      MyLocationOverlay(this, mMapView);  
                        mylocTest.enableMyLocation(); // 判断是否发现位置提供者  
                        mylocTest.enableCompass(); // 打开指南针  
                        mMapView.getOverlays().add(mylocTest);// 添加定位覆盖物  
                    }  
                }  
        };  
        // 按钮添加监听器  
        button_location.setOnClickListener(locationListener);  
        mMapController.setCenter(point); // 设置地图中心点  
        mMapController.setZoom(12); // 设置地图zoom 级别  
        // 添加地图覆盖物  
        mylocTest = new MyLocationOverlay(this, mMapView);  
        mylocTest.enableMyLocation(); // 判断是否发现位置提供者  
        mylocTest.enableCompass(); // 打开指南针  
        mMapView.getOverlays().add(mylocTest);// 添加定位覆盖物  
    }  
//另外一个添加界面覆盖物的类:  

public class MyLocationOverlayProxy extends com.amap.mapapi.map.MyLocationOverlay{  

    private Location mLocation;  
     protected final Paint mPaint = new Paint();  
     protected final Paint mCirclePaint = new Paint();  
     private Bitmap gps_marker=null;  
     private Point mMapCoords = new Point();  
     private final float gps_marker_CENTER_X;  
     private final float gps_marker_CENTER_Y;  
     private final LinkedList<Runnable> mRunOnFirstFix = new LinkedList<Runnable>();  
    public MyLocationOverlayProxy(amap amap, MapView mMapView) {  

        super(amap, mMapView);  
        gps_marker = ((BitmapDrawable) amap.getResources().getDrawable(  
                R.drawable.marker_gpsvalid)).getBitmap();  
        gps_marker_CENTER_X = gps_marker.getWidth() / 2 - 0.5f;  
        gps_marker_CENTER_Y= gps_marker.getHeight() / 2 - 0.5f;  
    }  

    public boolean runOnFirstFix(final Runnable runnable) {  
        if (mLocation != null) {  
            new Thread(runnable).start();  
            return true;  
        } else {  
            mRunOnFirstFix.addLast(runnable);  
            return false;  
        }  
    }  

    public void onLocationChanged(Location location) {  
        // TODO Auto-generated method stub    
        mLocation = location;  
        for(final Runnable runnable : mRunOnFirstFix) {  
            new Thread(runnable).start();  
        }  
        mRunOnFirstFix.clear();  
        super.onLocationChanged(location);  
    }  

    protected void drawMyLocation(Canvas canvas,  MapView mapView, final Location mLocation,  
            GeoPoint point, long time) {  
        Projection pj=mapView.getProjection();  
        if (mLocation != null) {  
                mMapCoords=pj.toPixels(point, null);  
                final float radius = pj.metersToEquatorPixels(mLocation.getAccuracy());   
                this.mCirclePaint.setAntiAlias(true);  
                this.mCirclePaint.setARGB(35, 131, 182, 222);  
                this.mCirclePaint.setAlpha(50);  
                this.mCirclePaint.setStyle(Style.FILL);  
                canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint);  
                this.mCirclePaint.setARGB(225, 131, 182, 222);  
                this.mCirclePaint.setAlpha(150);  
                this.mCirclePaint.setStyle(Style.STROKE);  
                canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint);                 
                canvas.drawBitmap(gps_marker, mMapCoords.x-gps_marker_CENTER_X, mMapCoords.y-gps_marker_CENTER_Y, this.mPaint);  
        }  
  }  

}  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值