我有示例条目
- 纬度: 12.962899
- 液化天然气77.622330
我在地图上画了一个半径为10000
的圆
Circle circle = map.addCircle(new CircleOptions()
.center(new LatLng(lat, lng))
.radius(10000)
.strokeColor(Color.RED)
.fillColor(Color.BLUE));
我想做的是:如果给我一个新的lat
,lng
值,我想找出新位置是否在圆半径内。
如何实现这一点
您可以使用此函数找出 2 个经度长之间的距离
private float calculateLocationDifference(LatLng lastLocation, LatLng firstLocation) {
float[] dist = new float[1];
Location.distanceBetween(lastLocation.latitude, lastLocation.longitude, firstLocation.latitude, firstLocation.longitude, dist);
return dist[0];
}
传递圆的中心点和新点。 如果距离<10000,则位置在圆中
您可以将其视为坐标系,假设您将第一个点放在地图上。
您正在添加一个新点,并希望检查它是否在您的圆内,因为您的圆的半径为10000
您可以比较点之间的距离(新旧(,如果这个距离> 10000
则您的新点不在圆内。
如果您使用的是谷歌地图,则可以使用距离方法查找距离:
Location.distanceBetween(FirstLatitude, FirstLongitude, SecondLatitude, SecondLongitude, results);
您可以使用以下函数: 它将返回布尔值 true 或 false 点 = {纬度: 12.962899, LNG: 77.622330} 或者您可以从点击事件中获得积分
function pointInCircle(point, radius, center) {
return (google.maps.geometry.spherical.computeDistanceBetween(point, center) <= radius)
}