【发布时间】:2018-09-09 02:19:41
【问题描述】:
我没有多少数学知识,但我找不到我得到错误数据的原因。我试图从中心顶点(纬度,经度)和半径 500 英里处找到圆周上的所有点。我通过将坐标传递给谷歌地图并获取状态列表来验证结果。输入 lat 是 41.8781 和 long -87,6297 (Chicago IL),我得到的结果只是状态 IL
public List<Coordinates> PointOnCircle(double lat, double longi, float radius)
{
var r = radius / EARTH_RADIUS_NM;
var list = new List<Coordinates>();
for (int i = 0; i <= 360;)
{
Coordinates coordinates = new Coordinates();
// Convert from degrees to radians via multiplication by PI/180
double x = (r * Math.Cos(i * Math.PI / 180F)) + lat;
double y = (r * Math.Sin(i * Math.PI / 180F)) + longi;
coordinates.Latitude = x;
coordinates.Longitude = y;
i += 5;
list.Add(coordinates);
}
return list;
}
public Dictionary<string,string> GetStatesFromCordinates(List<Coordinates> coordinates)
{
var states = new Dictionary<string, string>();
foreach(var co in coordinates)
{
var geoLocation = GoogleService.GetGeoLocation(co.Latitude, co.Longitude);
var state= geoLocation.results.FirstOrDefault().address_components.FirstOrDefault(ac => ac.types.Any(ty => ty == "administrative_area_level_1"));
if(state != null)
{
var longstatename = state.long_name;
var shortstatename = state.short_name;
if(!states.ContainsKey(shortstatename))
states.Add(shortstatename, longstatename);
}
}
return states;
【问题讨论】: