android地图,判断坐标是否在你要求的范围内
16lz
2021-12-04
第一,先定一个一个pojo。就是一个对象,对象里有 id 经度lag 维度lat
public class Company {private int id;public int getId() {return id;}public void setId(int id) {this.id = id;}public Double getLat() {return lat;}public void setLat(Double lat) {this.lat = lat;}public Double getLag() {return Lag;}public void setLag(Double lag) {Lag = lag;}private Double lat;private Double Lag;}
第二:写一个方法,判断该项目的坐标是不是在,在给定的坐标半径范围内
package cn.searchmap.db;import java.math.BigDecimal;public class SearchMapService {/**
* @param lat * 纬度 * @param lag * 经度 * @param r * 半径 * @return Boolean */public static Boolean check(Company company, Double lat, Double lag,Integer r) {double R = 6371;// 地球半径double distance = 0.0;double dLat = Double.valueOf(new BigDecimal(String.valueOf((company.getLat() - lat))).multiply(new BigDecimal(String.valueOf(Math.PI))).divide(new BigDecimal(String.valueOf(180)), DEFAULT_DIV_SCALE,BigDecimal.ROUND_HALF_EVEN).toString());double dLon = Double.valueOf(new BigDecimal(String.valueOf((company.getLag() - lag))).multiply(new BigDecimal(String.valueOf(Math.PI))).divide(new BigDecimal(String.valueOf(180)), DEFAULT_DIV_SCALE,BigDecimal.ROUND_HALF_EVEN).toString());double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)+ Math.cos(company.getLat() * Math.PI / 180)* Math.cos(lat * Math.PI / 180) * Math.sin(dLon / 2)* Math.sin(dLon / 2);distance = (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))) * R * 1000;System.out.println(distance);if (distance > Double.valueOf(String.valueOf(r))) {return false;}return true;}
第三:在使用端调用该方法:通过boolean值去判断在不在:
//建一个company对象 给赋值
// 以南宁市中心朝阳广场5000m内 22.82515 108.327743 5000是半径哦
boolean isok = SearchMapService.check(你的company对象, 22.82515,108.327743, 5000);
if (isok) {
Log.e("haha", "亲你在指定的范围内哦");
//把该项目绘制在地图上。亲,大家懂了吧!如有不懂,欢迎骚扰!
}else {Log.e("haha", "亲,你被抛弃了,不在指定的范围内");}
更多相关文章
- 类和 Json对象
- android通过php连接mysql数据库!!!!
- Android中的Bundle类
- 从java内存分配角度分析android内存泄漏问题
- SharedPreferences
- Android(安卓)系统广播机制
- Android(安卓)Bundle类
- Android--用Pull解析器将对象解析成xml文件及单元测试
- Xposed: 勾住(Hook) Android应用程序对象的方法,实现AOP