2014-02-25 47 views
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; } 
} 
+0

看起来您的'功能'列表尚未初始化。它看起来像你在混合命名约定。公共方法和属性应该是PascalCase。 – Magus

+0

你的意思是这个GeoRootObject GeoRoot = new GeoRootObject(); 它在忘记粘贴的方法,好的点的情况下,我用一个工具来创建类,我一定会收拾 – saj

回答

2

你似乎遇到的主要问题是,你试图调用一个空清单上的.Add()方法。在提供问题之前的行上,尝试添加GeoRoot.features = new List<Feature>();

+0

Big Thanku Magus – saj

相关问题