详解Android中玩转高德地图

来源:互联网 发布:返利软件 知乎 编辑:程序博客网 时间:2024/06/05 22:36

在上一篇博客上,和大家分享了如何在Android中集成高德定位以及定位的基本使用。今天我们就来看看高德地图在Android中如何使用吧。

同样,我将本篇博客的内容分为如下部分:

(1)添加高德SDK

(2)配置AndroidManifest文件

(3)创建地图

(4)控件交互

(5)方法交互

(6)地图截图

(7)添加Marker标记

上面我大致分为了7部分,其中第(1)、(2)部分在高德定位的博客中有说,本篇就不再多述。不同的地方就是我们需要添加地图的SDK以及armebi文件:

ok,下面正式进入地图的使用。

(1)创建地图:即在XML中添加即可。

    <com.amap.api.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

然后重写Activity的生命周期方法,并在其中调用MapView相对的生命周期方法:

    @Override
    protected void onCreate() {
        mMapView = (MapView) findViewById(R.id.mapview);
        mMapView.onCreate(savedInstanceState);//此方法必须重写
        if(mMap == null) {
            mMap = mMapView.getMap();
        }
        // 地图模式可选类型:
        // MAP_TYPE_NORMAL:普通模式(默认)
        // MAP_TYPE_SATELLITE:卫星地图模式
        // MAP_TYPE_NIGHT:夜间模式
        // mMap.setMapType(AMap.MAP_TYPE_SATELLITE);

    }

   @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
    }

(2)控件交互:高德允许我们在地图上显示一些交互的控件。


        mUiSettings = mMap.getUiSettings();
        //控制定位到当前按钮的显示和隐藏
        mUiSettings.setMyLocationButtonEnabled(true);
        //控制缩放控件的显示和隐藏。
        mUiSettings.setZoomControlsEnabled(true);
        //控制指南针的显示和隐藏。
        mUiSettings.setCompassEnabled(true);
        //显示比例尺控件:例如1:10Km
        mUiSettings.setScaleControlsEnabled(true);


(3)方法交互:

         1.改变地图中心点
        CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(
                new CameraPosition(new LatLng(39.977290,116.337000),//新的中心点坐标
                18, //新的缩放级别
                30, //俯仰角0°~45°(垂直与地图时为0)
                0  ////偏航角 0~360° (正北方为0)
                ));

       改变地图中心点有两种方式:
        (1)平滑地移动地图:第二个参数为移动时长
            mMap.animateCamera(cameraUpdate, 1000, new AMap.CancelableCallback() {
                @Override
                public void onFinish() {

                }

                @Override
                public void onCancel() {

                }
            });

        (2)直接应用新的视图
            mMap.moveCamera(cameraUpdate);

       2.改变地图缩放级别
               zoomTo是缩放地图到指定的缩放级别,ZoomIn是缩放地图到当前缩放级别的上一级
          mMap.moveCamera(CameraUpdateFactory.zoomTo(17));//将地图的缩放级别调整到17级

   (4)地图截取:高德提供了地图截取功能,可以在截取后获取到Bitmap

 mMap.getMapScreenShot(new AMap.OnMapScreenShotListener() {
    @Override
    public void onMapScreenShot(Bitmap bitmap) {

    }

    @Override
    public void onMapScreenShot(Bitmap bitmap, int i) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        if(null == bitmap){
            return;
        }
        //保存截图
        try {
            FileOutputStream fos = new FileOutputStream(
                    Environment.getExternalStorageDirectory() + "/test_"
                            + sdf.format(new Date()) + ".png");
            boolean b = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);

            try {
                fos.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            StringBuffer buffer = new StringBuffer();

            if (b)
                buffer.append("截屏成功 ");
            else {
                buffer.append("截屏失败 ");
            }

            if (i != 0)
                buffer.append("地图渲染完成,截屏无网格");
            else {
                buffer.append( "地图未渲染完成,截屏有网格");
            }

            //ToastUtil.show(ScreenShotActivity.this, buffer.toString());

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
});

(5)添加Marker标记。


          LatLng latLng = new LatLng(39.906901,116.397972);
        Marker marker = mMap.addMarker(new MarkerOptions()
                .draggable(true)//可拖拽
                .setFlat(true)//将Marker设置为贴地显示,可以双指下拉看效果
                .icon(BitmapDescriptorFactory
                        .fromResource(R.drawable.ic_location_mark))//Marker图标
                .title("marker标记")//标题
                .position(latLng));

        //显示InfoWindow
        if(!marker.isInfoWindowShown()) {
            marker.showInfoWindow();
        }

 
        //Marker点击事件
        mMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {

            @Override
            public boolean onMarkerClick(Marker arg0) {

                return false;
            }
        });

ok,以上就是关于高德地图的基本使用,最后我们看下效果(手机截图):


相信大家对使用高德地图有了更深的认识。关于地图SDK其他的一些功能,大家可以去官网了解。高德地图


1 0
原创粉丝点击