package com.palmnest.application.core.util;

import com.palmnest.model.ScopeEntity;

/**
 * @Author HIAPAD
 * @Description 定位工具类
 * @Date 2019/6/4 9:56
 **/
public class LocationUtil {

	/**
	 * 获取指定坐标,指定范围内的坐标
	 * 存在误差:
	 * 1.需求是获取以指定坐标为圆心,指定范围为半径的圆范围内的坐标;
	 * 2.实际是获取以指定坐标为中心,2*scope 为边长的正方形范围;
	 *
	 * @param longitude 指定经度
	 * @param latitude  指定纬度
	 * @param scope     范围,单位km
	 * @return
	 */
	public static ScopeEntity findNeighPosition(double longitude, double latitude, double scope) {
		//先计算查询点的经纬度范围
		double r = 6371;//地球半径千米
		double dlng = 2 * Math.asin(Math.sin(scope / (2 * r)) / Math.cos(latitude * Math.PI / 180));
		dlng = dlng * 180 / Math.PI;//角度转为弧度
		double dlat = scope / r;
		dlat = dlat * 180 / Math.PI;
		double minlat = latitude - dlat;
		double maxlat = latitude + dlat;
		double minlng = longitude - dlng;
		double maxlng = longitude + dlng;

		return new ScopeEntity(minlat, maxlat, minlng, maxlng);
	}
}
