(三)高德地图之自定义缩放及缩放动画效果

这一节主要实现的功能是地图的自定义缩放及缩放的动画效果,还是直接放上代码更直观些,主要部位里面基本有注解

还是老样子,首先是新建activity_zoom_animate.xml布局文件




    

        

            
        



        

            

然后是创建类文件Zoom_Animate.java

package com.junto.gdmaptest.activity;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;

import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.junto.gdmaptest.R;

/**
 * Created by WangJinyong on 2018/10/22.
 * 地图自定义缩放及缩放动画效果
 */

public class Zoom_AnimateActivity extends Activity implements View.OnClickListener {

    MapView mapView = null;
    AMap aMap;
    CheckBox animate;//是否添加动画
    Button zoomIn,zoomOut;//+  -

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zoom_animate);
        //获取地图控件引用
        mapView = findViewById(R.id.map);
        //在activity执行onCreat时执行mapView.onCreate(savedInstanceState),创建地图,必需要写的
        mapView.onCreate(savedInstanceState);
        initView();
    }

    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
        mapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
        mapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
        mapView.onDestroy();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
        mapView.onSaveInstanceState(outState);
    }

    private void initView() {
        //初始化AMap对象
        if (aMap == null) {
            aMap = mapView.getMap();
        }

        animate = findViewById(R.id.animate);//是否添加动画
        animate.setOnClickListener(this);
        zoomIn = findViewById(R.id.zoom_in);//+
        zoomIn.setOnClickListener(this);
        zoomOut = findViewById(R.id.zoom_out);//-
        zoomOut.setOnClickListener(this);
    }

    /**
     * 根据动画按钮状态,调用函数animateCamera或moveCamera来改变可视区域
     */
    private void changeCamera(CameraUpdate update, AMap.CancelableCallback callback) {
        boolean animated = animate.isChecked();
        if (animated) {
            aMap.animateCamera(update, 1000, callback);//1000是动画时间
        } else {
            aMap.moveCamera(update);
        }
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.zoom_in://点击地图放大按钮(+)响应事件
                changeCamera(CameraUpdateFactory.zoomIn(), null);
                break;
            case R.id.zoom_out://点击地图缩小按钮(-)响应事件
                changeCamera(CameraUpdateFactory.zoomOut(), null);
                break;
        }
    }
}

通过上面的代码就能实现地图的自定义缩放和缩放的动画效果了,这些都是可控的。

下一节再接着介绍地图定位的几种模式

你可能感兴趣的:(高德地图)