0
我很困惑。我在包含GeoRoot.features.Add(Feat);
的行上收到對象引用錯誤,這看起來像一個列表。我究竟做錯了什麼?將項目添加到列表時拋出異常
public double getDistance(GeoCoordinate p1, GeoCoordinate p2)
{
double d = p1.Latitude * 0.017453292519943295;
double num3 = p1.Longitude * 0.017453292519943295;
double num4 = p2.Latitude * 0.017453292519943295;
double num5 = p2.Longitude * 0.017453292519943295;
double num6 = num5 - num3;
double num7 = num4 - d;
double num8 = Math.Pow(Math.Sin(num7/2.0), 2.0) + ((Math.Cos(d) * Math.Cos(num4)) * Math.Pow(Math.Sin(num6/2.0), 2.0));
double num9 = 2.0 * Math.Atan2(Math.Sqrt(num8), Math.Sqrt(1.0 - num8));
return (6376500.0 * num9);
}
public GeoRootObject GetRndNearybyLocationList(double lat, double lon, int meters)
{
GeoRootObject GeoRoot=new GeoRootObject();
LocationObject thisRndLocation = new LocationObject();
List<LocationObject> locationsList = new List<LocationObject>();
//List<GeoJSON.Net.Geometry.GeographicPosition> Positions = new List<GeoJSON.Net.Geometry.GeographicPosition>();
Random rnd = new Random();
int dice = rnd.Next(1, 7);
for (int i = 1; i <= dice; i++)
{
thisRndLocation = getLocation(lat, lon, meters);
GeoRoot.type = "FeatureCollection";
Feature Feat = new Feature();
Feat.type = "Point";
List<double> coOrds = new List<double>();
coOrds.Add(thisRndLocation.lon);
coOrds.Add(thisRndLocation.lat);
GeoRoot.features.Add(Feat);
Geometry Geometry = new Geometry();
Geometry.coordinates = (coOrds);
Geometry.type = ("Point");
Feat.geometry = Geometry;
Feat.id = i;
GeoRoot.features.Add(Feat);
}
return GeoRoot;
}
下面是所謂的方法段類以上
public class Geometry
{
public string type { get; set; }
public List<double> coordinates { get; set; }
}
public class Properties
{
public string popupContent { get; set; }
}
public class Feature
{
public Geometry geometry { get; set; }
public string type { get; set; }
public Properties properties { get; set; }
public int id { get; set; }
}
public class GeoRootObject
{
public string type { get; set; }
public List<Feature> features { get; set; }
}
看起來您的'功能'列表尚未初始化。它看起來像你在混合命名約定。公共方法和屬性應該是PascalCase。 – Magus
你的意思是這個GeoRootObject GeoRoot = new GeoRootObject(); 它在忘記粘貼的方法,好的點的情況下,我用一個工具來創建類,我一定會收拾 – saj