java计算地图多边形面积_百度地图API画多边型,测面积

BMapLib.GeoUtils是百度地图API提供的一个工具类,包含了多种几何算法,用于判断点与矩形、圆形、多边形的关系,以及计算多边形面积和折线长度。例如,`GeoUtils.isPointInRect()`可以判断点是否在矩形内,`GeoUtils.getPolygonArea()`用于计算多边形面积。这些方法对于地图应用开发非常实用。
摘要由CSDN通过智能技术生成

/**

* @fileoverview GeoUtils类提供若干几何算法,用来帮助用户判断点与矩形、

* 圆形、多边形线、多边形面的关系,并提供计算折线长度和多边形的面积的公式。

* 主入口类是GeoUtils,

* 基于Baidu Map API 1.2。

*

* @author Baidu Map Api Group

* @version 1.2

*/

//BMapLib.GeoUtils.degreeToRad(Number)

//将度转化为弧度

//BMapLib.GeoUtils.getDistance(Point, Point)

//计算两点之间的距离,两点坐标必须为经纬度

//BMapLib.GeoUtils.getPolygonArea(polygon)

//计算多边形面或点数组构建图形的面积,注意:坐标类型只能是经纬度,且不适合计算自相交多边形的面积(封闭的面积)

//BMapLib.GeoUtils.getPolylineDistance(polyline)

//计算折线或者点数组的长度

//BMapLib.GeoUtils.isPointInCircle(point, circle)

//判断点是否在圆形内

//BMapLib.GeoUtils.isPointInPolygon(point, polygon)

//判断点是否多边形内

//BMapLib.GeoUtils.isPointInRect(point, bounds)

//判断点是否在矩形内

//BMapLib.GeoUtils.isPointOnPolyline(point, polyline)

//判断点是否在折线上

//BMapLib.GeoUtils.radToDegree(Number)

//将弧度转化为度

/**

* @namespace BMap的所有library类均放在BMapLib命名空间下

*/

var BMapLib = window.BMapLib = BMapLib || {};

(function () {

/**

* 地球半径

*/

var EARTHRADIUS = 6370996.81;

/**

* @exports GeoUtils as BMapLib.GeoUtils

*/

var GeoUtils =

/**

* GeoUtils类,静态类,勿需实例化即可使用

* @class GeoUtils类的入口

* 该类提供的都是静态方法,勿需实例化即可使用。

*/

BMapLib.GeoUtils = function () {

}

/**

* 判断点是否在矩形内

* @param {Point} point 点对象

* @param {Bounds} bounds 矩形边界对象

* @returns {Boolean} 点在矩形内返回true,否则返回false

*/

GeoUtils.isPointInRect = function (point, bounds) {

//检查类型是否正确

if (!(point instanceof BMap.Point) ||

!(bounds instanceof BMap.Bounds)) {

return false;

}

var sw = bounds.getSouthWest(); //西南脚点

var ne = bounds.getNorthEast(); //东北脚点

return (point.lng >= sw.lng && point.lng <= ne.lng && point.lat >= sw.lat && point.lat <= ne.lat);

}

/**

* 判断点是否在圆形内

* @param {Point} point 点对象

* @param {Circle} circle 圆形对象

* @returns {Boolean} 点在圆形内返回true,否则返回false

*/

GeoUtils.isPointInCircle = function (point, circle) {

//检查类型是否正确

if (!(point instanceof BMap.Point) ||

!(circle instanceof BMap.Circle)) {

return false;

}

//point与圆心距离小于圆形半径,则点在圆内,否则在圆外

var c = circle.getCenter();

var r = circle.getRadius();

var dis = GeoUtils.getDistance(point, c);

if (dis <= r) {

return true;

} else {

return false;

}

}

/**

* 判断点是否在折线上

* @param {Point} point 点对象

* @param {Polyline} polyline 折线对象

* @returns {Boolean} 点在折线上返回true,否则返回false

*/

GeoUtils.isPointOn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值