高德地图设置可视区域边界

来源:互联网 发布:网络推广师 编辑:程序博客网 时间:2024/05/20 00:12

刚好项目中涉及到地图的可视区域,这里做一下汇总

1、方法介绍

public LatLngBounds.Builder include(LatLng point)返回一个新的矩形区域。新区域是根据传入的经纬度对原有区域进行最小的扩展。public LatLngBounds(LatLng southwest,LatLng northeast)使用传入的西南角坐标和东北角坐标创建一个矩形区域。

2、示例代码

2.1通过include来设置可视区域

LatLngBounds bounds = new LatLngBounds.Builder()                .include(latlng1).include(latlng2).include(latlng3)                .include(latlng4).include(latlng5).include(latlng6)                .include(latlng7).include(latlng8).include(latlng9)                .include(latlng10).build();// 移动地图,所有latlng自适应显示。LatLngBounds与地图边缘10像素的填充区域aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 10));

2.2通过西南角坐标和东北角坐标来设置可视区域

    /**     * 已知一点的经纬度和该点到另一点的距离、角度,求另一点的经纬度     * @param distance 千米     * @param latlngA     * @param angle    角度     * @return     */    public static LatLng getLatlng(float distance, LatLng latlngA, double angle) {        return new LatLng(latlngA.latitude + (distance * Math.cos(angle * Math.PI / 180)) / 111,                latlngA.longitude + (distance * Math.sin(angle * Math.PI / 180)) / (111 * Math.cos(latlngA.latitude * Math.PI / 180))        );    }    float dist = 60; //km    float dealDist = dist / Math.sin(45 * Math.PI / 180); //km    LatLng center = aMap.getCameraPosition().target;    LatLng northeast = getLatlng(dealDist, center, 45);    LatLng southwest = getLatlng(dealDist, center, 225);    LatLngBounds latLngBounds = new LatLngBounds(southwest, northeast);    aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(latLngBounds, 10));

理论上以center为中心、dist为半径画一个圆就能覆盖我们的可视区域,但是LatLngBounds创建的是一个矩形区域。我们需要创建一个下图所示的矩形区域。
这里写图片描述

本人更加推荐用第二种方法来设置可视区域

0 0
原创粉丝点击