(五)高德地图之添加groundoverlay覆盖物

本节主要实现的功能是往地图上添加一个groundoverlay覆盖物,用此方式可以实现公园电子导游,下面先来看一张效果图吧:

接下来我们还是直接上代码:

新建布局文件activity_groundoverlay.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

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

</LinearLayout>

 新建类文件:GroundOverlayActivity.java

package com.junto.gdmaptest.activity;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;

import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.GroundOverlayOptions;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.LatLngBounds;
import com.junto.gdmaptest.R;

/**
 * Created by WangJinyong on 2018/10/26.
 * 往地图上添加一个groundoverlay覆盖物
 */

public class GroundOverlayActivity extends Activity {

    private MapView mapView;
    private AMap aMap;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_groundoverlay);
        mapView = findViewById(R.id.mapView);
        mapView.onCreate(savedInstanceState);
        initView();
    }

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

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

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

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mapView.onSaveInstanceState(outState);
    }

    private void initView(){
        if (aMap == null){
            aMap = mapView.getMap();
            addOverLayToMap();
        }
        aMap.showBuildings(false);
        LatLngBounds latLngBounds = new LatLngBounds(new LatLng(39.935029, 116.384377), new LatLng(39.939577, 116.388331));
        aMap.setMapStatusLimits(latLngBounds);
    }

    //往地图上添加一个groundoverlay覆盖物
    private void addOverLayToMap(){
        aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(39.936713, 116.386475),18));
        LatLngBounds bounds = new LatLngBounds.Builder()//设置显示在屏幕中的地图地理范围,地图中点显示为两个点的中点
                .include(new LatLng(39.935029, 116.384377))
                .include(new LatLng(39.939577, 116.388331)).build();
        aMap.addGroundOverlay(new GroundOverlayOptions()
                .anchor(10.0f, 10.0f)//设置ground覆盖物的锚点比例,默认为0.5f,水平和垂直方向都居中对齐
                .transparency(0.0f)//设置覆盖物的透明度,范围:0.0~1.0
                .zIndex(0)//设置覆盖物的层次,zIndex值越大越在上层;
                .image(BitmapDescriptorFactory.fromResource(R.mipmap.groundoverlay))//覆盖物图片
                .positionFromBounds(bounds));
    }
}

在这里顺便把覆盖物的图片也附上一张,这个图片需要根据实际需求设计来做的,在这里只是为了方便做demo来实现类似效果

 本节到这里又结束啦,是不很简单

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时代新人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值