根据经纬度数组计算面积

要求:根据后台提供的经纬度数组,计算所围成的面积。

	PointInfo pointInfo = new PointInfo(115.989099,39.646023);
    PointInfo pointInfo1 = new PointInfo(115.987394,39.645988);
    PointInfo pointInfo2 = new PointInfo(115.987371,39.647407);
    PointInfo pointInfo3 = new PointInfo(115.986684,39.647423);
    PointInfo pointInfo4 = new PointInfo(115.986602,39.648088);
    PointInfo pointInfo5 = new PointInfo(115.989095,39.648151);
    PointInfo pointInfo6= new PointInfo(115.989188,39.646021);
    PointInfo pointInfo7 = new PointInfo(115.989099,39.646023);
    ArrayList list = new ArrayList();
    list.add(pointInfo);
    list.add(pointInfo1);
    list.add(pointInfo2);
    list.add(pointInfo3);
    list.add(pointInfo4);
    list.add(pointInfo5);
    list.add(pointInfo6);
    list.add(pointInfo7);
    System.out.println(list.get(0));
    double area = 0;
    for (int i = 0; i < list.size()-1; i++) {
        PointInfo info1 = (PointInfo) list.get(i);
        PointInfo info2 = (PointInfo) list.get(i+1);
        area += ConvertToRadian(info2.Longitude - info1.Longitude) * (2 + Math.sin(ConvertToRadian(info2.Latitude)) + Math.sin(ConvertToRadian(info1.Latitude)));
        
    }
    area = area * 6378137.0 * 6378137.0 / 2.0;
    System.out.println(Math.abs(area)); 


PointInfo是存放经纬度的实体类

public class PointInfo {
    double Longitude;
    double Latitude;

    public double getLongitude() {
        return Longitude;
    }

    public void setLongitude(double longitude) {
        Longitude = longitude;
    }

    public double getLatitude() {
        return Latitude;
    }

    public void setLatitude(double latitude) {
        Latitude = latitude;
    }

    @Override
    public String toString() {
        return "PointInfo{" +
                "Longitude=" + Longitude +
                ", Latitude=" + Latitude +
                '}';
    }

    public PointInfo(double longitude, double latitude) {
        Longitude = longitude;
        Latitude = latitude;
    }
}

ConvertToRadian

    private static double ConvertToRadian(double input) {
        return input * Math.PI / 180;
    }

运行结果
在这里插入图片描述

注意:

上面的经纬度是double类型的数据,如果是存放在数据库中可能是decimal类型的数据,默认会在经纬度的后面填充0
在这里插入图片描述
计算时需要截取前十位有用的数字,否则计算出来的数据会有较大偏差。
在这里插入图片描述

算法借鉴:https://blog.csdn.net/cjtlp2006/article/details/76665028?spm=1001.2014.3001.5506

欢迎小伙伴在评论区补充

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要根据后端返回的经纬度数组回放路径轨迹,您需要使用地图API将这些坐标点绘制在地图上,以显示路径的路线。 以下是一个通用的基本步骤,可以帮助您实现这个功能: 1. 选择一个合适的地图API,例如Google Maps、Mapbox、Baidu Maps等,并获取API密钥。 2. 根据您选择的API,按照文档指示,初始化地图对象。 3. 根据后端返回的经纬度数组,使用API提供的功能将这些坐标点添加到地图上。 4. 如果需要,可以设置路径的样式,例如颜色、宽度等。 5. 可选:将地图视角调整为适当的缩放级别,以便用户能够看到整个路径。 6. 将地图对象嵌入到您的页面中,以便用户可以查看路径轨迹。 下面是一个使用Google Maps API V3的示例代码: ```javascript function initMap() { var map = new google.maps.Map(document.getElementById('map'), { zoom: 14, center: {lat: 37.7749, lng: -122.4194} // 设定地图中心 }); var path = []; // 存储路径点的数组 var coordinates = [ // 后端返回的经纬度数组 {lat: 37.7749, lng: -122.4194}, {lat: 37.7742, lng: -122.4186}, {lat: 37.7735, lng: -122.4179}, {lat: 37.7730, lng: -122.4168}, {lat: 37.7725, lng: -122.4158}, {lat: 37.7720, lng: -122.4151}, ]; for (var i = 0; i < coordinates.length; i++) { path.push(new google.maps.LatLng(coordinates[i].lat, coordinates[i].lng)); } var route = new google.maps.Polyline({ path: path, geodesic: true, strokeColor: '#FF0000', strokeOpacity: 1.0, strokeWeight: 2 }); route.setMap(map); } ``` 这段代码将在名为 "map" 的HTML元素中创建一个新的Google地图,并在地图上绘制一个红色的折线,表示一条路径轨迹。您可以将其修改为符合您自己的需求。 ### 回答2: 根据后端返回的经纬度数组回放路径轨迹可以使用地图和定位技术来实现。 首先,我们需要使用地图API来加载地图,常用的地图API包括百度地图、高德地图等。通过API提供的接口,我们可以将地图显示在页面上,并根据返回的经纬度数据来标记路径点。 其次,我们需要使用定位技术来获取用户的当前位置并在地图上标记出来。通过GPS或其他定位技术,我们可以获得用户的当前经纬度坐标,并将其显示在地图上。 然后,我们需要使用返回的经纬度数组来回放路径轨迹。可以通过循环遍历数组中的每一个经纬度坐标点,并通过地图API提供的接口将其标记在地图上。在标记每一个点的同时,我们可以设置一定的延时,以便观察路径的移动。 最后,为了增加用户体验,我们还可以添加一些动画效果来展示路径的回放。可以通过设置动态移动的标记点、改变路径线的颜色等方式,营造出轨迹回放的效果。 根据以上步骤,我们可以实现根据后端返回的经纬度数组回放路径轨迹的功能。用户可以在地图上观察到路径点的标记,并通过动态效果感受到路径的回放过程。这样的功能可以应用于很多场景,比如旅游导航、运动轨迹回放等。 ### 回答3: 根据后端返回的经纬度数组回放路径轨迹,我们可以使用地图相关的API来实现。首先,我们需要获取地图的实例,然后根据传入的经纬度数组来绘制路径轨迹。 我们可以选择使用百度地图、谷歌地图、高德地图等开放平台提供的API。以百度地图为例,具体步骤如下: 1. 首先,我们需要申请百度地图的API密钥。在申请过程中,需要提供相关的开发者信息,包括应用名称、应用描述等。 2. 在前端页面中,引入百度地图的JS文件,并创建一个地图容器,用来展示地图。可以通过指定的DOM元素的id来获取该容器。 3. 在后端返回的经纬度数组中,遍历每个经纬度点,并将其添加到百度地图的经纬度对象中。 4. 创建一个百度地图的点集合(polyline),将上述经纬度对象添加到点集合中。 5. 将点集合添加到地图上,并设置点集合的相关属性,如颜色、线宽等。 6. 最后,调用百度地图的绘制方法,将路径轨迹展示在地图上。 通过上述步骤,我们可以实现根据后端返回的经纬度数组回放路径轨迹。用户可以在地图上看到路径的具体轨迹,并进行放大、缩小、拖拽等操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值